Elus, et olen ametilt arvutisĂŒsteemide ja vĂ”rkude administraator (lĂŒhidalt: sĂŒsteemihaldur) ning mul on olnud ĂŒle 10 aasta professionaalset kogemust erinevate sĂŒsteemidega, sealhulgas nendega, mis nĂ”uavad [ĐżĐŸ|за]vishennud meetmeid turvalisuse tagamiseks. Ja olen samuti leidnud, et mĂ”ni aeg tagasi huvitab mind , ja mitte lihtsalt ei kasutanud seda, vaid kĂ€ivitasin ka mitu mikroteenust, et Ă”ppida ise töötama bitcoini vĂ”rgus (see on p2p pĂ€rast) arendaja vaatenurgast (ma muidugi ei ole just kĂ”ige parem dev, lihtsalt mööda jalutasin). Aga ma ei rÀÀgi arendamisest, vaid turvalisest ja efektiivsest keskkonnast rakenduste jaoks.
Finantstehnoloogiad (fintech) kĂ€ivad kĂ€sikĂ€es infotehnoloogia turvalisusega (infosec) ja esimene vĂ”ib töötada ilma teiseta, aga mitte kaua. SeetĂ”ttu tahan jagada oma kogemust ja tööriistade komplekti, mida ma kasutan, mis hĂ”lmab nii fintech, kui ka infosec, kĂŒll aga vĂ”ib seda kasutada ka laiemates vĂ”i tĂ€iesti erinevates ĂŒlesannetes. Selles artiklis rÀÀgin ma mitte niivĂ”rd Bitcoinist, vaid infrastruktuuri mudelist finants- (ja mitte ainult) teenuste arendamiseks ja haldamiseks â ĂŒhe sĂ”naga teenustest, kus âBâ mĂ€ngib olulist rolli. See kehtib nii Bitcoin'i börsi kui ka tĂŒĂŒpilise ettevĂ”tte teenuste mitmekesise valiku kohta, mis Bitcoiniga kuidagi ei seondu.
Soovin mĂ€rkida, et olen pĂ”himĂ”tete poolt âkeep it stupid simpleâ ja âless is moreâ, seega nii artikkel kui ka selles kirjeldatud sisu omavad omadusi, mis tulenevad nendest pĂ”himĂ”tetest.
Kujuteldav stsenaarium: Vaatame kĂ”ike bitcoini vahetuse nĂ€itel. Otsustasime kĂ€ivitada rubla, dollari, euro ja bitcoinide vahetuse ning meil on juba töötav lahendus, kuid teiste digitaalsete raha nagu Qiwi ja WebMoney puhul on meie Ă”iguskĂŒsimused lahendatud. Meil on valmis rakendus, mis toimib maksegateway'na rubla, dollari, euro ja teiste maksesĂŒsteemide jaoks. See on seotud meie pankakontodega ja omab mingit API-d meie lĂ”ppnĂ€idiste jaoks. Samuti on meil veebirakendus, mis toimib kasutajatele vahetuspunktina, sarnanedes tĂŒĂŒpilise Qiwi vĂ”i WebMoney kabinetiga â registreeruge, lisage kaart jne. See suhtleb meie gateway rakendusega, olgu see siis REST API kaudu kohalikus vĂ”rgus. NĂŒĂŒd otsustasime lisada bitcoine ja samal ajal uuendada infrastruktuuri, kuna algselt oli kĂ”ik kiirusest tingituna seatud virtuaalmasinatesse kontoris laua all... meie saidit hakati 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 hostimist (OVH), valime kus ei saa paigaldada sĂŒsteemi originaal .iso pildilt, kuid Ă€rge muretsege, IT-turbeosakond analĂŒĂŒsib kindlasti installitud pilti. Ja kui me kasvame, rendime oma lukustatud kappe ja piiratud fĂŒĂŒsilise juurdepÀÀsuga, vĂ”ib-olla isegi ehitame oma andmekeskuse. Igal juhul tasub meeles pidada, et riistvara rentimise ja valmis piltide installimise puhul on vĂ”imalus, et teie sĂŒsteemis on âhostija troojanâ, mis enamasti ei ole mĂ”eldud teie jĂ€lgimiseks, vaid et pakkuda mugavamaid serverihalduse tööriistu.
Serveri seadistamine
Siin on kĂ”ik lihtne. Valime riistvara, mis sobib meie vajadustele. Siis valime FreeBSD pildi. VĂ”i ĂŒhendame (teise hostija ja oma riistvara puhul) IPMI vĂ”i monitori kaudu ja laadime FreeBSD .iso pildi kĂ€ivitamiseks. Orkestreeritud paigaldamiseks kasutan ja . Ainus asi, meie juhul Kimsufiga, valisime kohandatud paigaldamine , et kahe ketta peegelduses oleksid âavatudâ ainult alglaadimis- ja /home partitsioonid, ĂŒlejÀÀnud kettaruumi krĂŒpteeritakse, kuid sellest rÀÀgime hiljem.

SĂŒsteemi paigaldamine toimub tavapĂ€rasel viisil, ma ei hakka sellel peatuma, vaid toon vĂ€lja, et enne kasutuselevĂ”ttu tasub tĂ€helepanu pöörata tugedele valikutele, mida pakub bsdinstaller paigalduse lĂ”pus (kui paigaldad sĂŒsteemi ise):

On sellel teemal, lĂŒhidalt kordaksin seda siin.
Eelmainitud parameetreid on vĂ”imalik lubada ka juba installitud sĂŒsteemis. Selleks tuleb redigeerida laadija faili ja lubada tuuma parameetrid. *ee 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=1Samuti tasub veenduda, et sul on installitud uusim versioon sĂŒsteemist, ja . Meie juhul on nĂ€iteks vajalik uuendamine viimasele versioonile, kuna eelpaigaldatavad pildid jÀÀvad maha poole aasta-ĂŒhe aasta vĂ”rra. Samuti muudame SSH pordi teiseks, kui vaikimisi, lisame autentimise vĂ”tmete kaudu ja keelame parooli kaudu.
SeejĂ€rel seadistame aide, sĂŒsteemifailide konfiguratsiooni seisundi jĂ€lgimise. Ăhest kĂŒljest saate sellest pĂ”hjalikumalt 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/$MYFILENAMELuba
sysrc auditd_enable=YES
# service auditd start
Kuidas seda hallata, on suurepÀraselt kirjeldatud .
NĂŒĂŒd taaskĂ€ivitame ja alustame tarkvaraga serveris. Iga server toimib hĂŒperviisorina 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 tööriista eest!
Konteinerid? Kas jÀlle docker?
Aga ei. â on suurepĂ€rane tööriist konteinerimiseks, ning mainitud cbsd nende konteinerite orkestreerimiseks, mille nimi on rakud.
Kletk on ÀÀrmiselt tĂ”hus lahendus infrastruktuuri loomiseks erinevate eesmĂ€rkide jaoks, kus lĂ”puks on vajalik eraldi teenuste vĂ”i protsesside tĂ€ielik isoleerimine. Sisuliselt on see klonni host-sĂŒsteemist, kuid ei nĂ”ua tĂ€ielikku âraudaâ virtualiseerimist. SeetĂ”ttu ei kulutata ressursse âkĂŒlg-OS-ileâ, vaid ainult tehtavale tööle. Kui kletke kasutatakse sisemiste vajaduste jaoks, siis on see vĂ€ga mugav lahendus ressursi optimaalseteks kasutamiseks â hulk kletke ĂŒhel serveril vĂ”ivad igaĂŒks eraldi vajadusel kasutada kogu serveri ressursi. Arvestades, et erinevad alamteenused vajavad tavaliselt erinevatel aegadel lisavahendeid, saab ĂŒhest serverist maksimaalset tootlikkust, kui kletke Ă”igesti planeerida ja tasakaalustada serverite vahel. Vajadusel saab kletkedele seada ka piirangud kasutatavatele ressurssidele.

Aga kuidas on korraliku virtualiseerimisega?
Nii palju kui mina tean, cbsd toetab töökorraldust bhyve ja XEN hĂŒpervĂ”rke. Teist ma pole kunagi kasutanud, aga esimene on suhteliselt noor . KĂ€sitleme nĂ€idet kasutamisest bhyve edasi nĂ€ites.
Hosti keskkonna seadistamine ja konfigureerimine
Kasutame FS-i . See on ÀÀrmiselt vĂ”imas tööriist serveri ruumi haldamiseks. ZFS-i abil on vĂ”imalik otse kettadelt luua erinevates seadetes olevaid maatrikseid, dĂŒnaamiliselt âkuumaltâ ruumi suurendada, vahetada rikkeid saanud kettaid, hallata hetkeseisu ja palju, palju muud, mida vĂ”iks kirjeldada terve artiklite seeria jooksul. Tagasi meie serveri ja selle ketaste juurde. Paigaldamise alguses jĂ€ttis vaba ruumi ĆĄifreeritud osade jaoks. Miks see niimoodi? Selleks, et sĂŒsteem saaks automaatselt ĂŒles tĂ”usta ja SSH kaudu kuulata.
gpart add -t freebsd-zfs /dev/ada0
/dev/ada0p4 added!
lisame ketta osa jÀÀkruumile
geli init /dev/ada0p4
sisestame meie ĆĄifreerimise parooli
geli attach /dev/ada0p4
taas sisestame parooli ja meil ilmub seade /dev/ada0p4.eli â see on meie ĆĄifreeritud ruum. SeejĂ€rel korrame sama ka /dev/ada1 ja teiste ketaste jaoks maatriksis. Ja loome uue .
zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli â no nĂ€ed, meie minimaalne töökomplekt on valmis. Peegeldav ketta massiiv juhuks, kui ĂŒks kolmest tĂ”rkub.
Loome andmebaasi uuel âpuulâ
zfs create vms/jails
pkg install cbsd â kĂ€ivitasime kĂ€su ja installime meie rakenduste haldamise tööriista.
PĂ€rast seda, kui cbsd on paigaldatud, tuleb see initsialiseerida:
# env workdir="/vms/jails" /usr/local/cbsd/sudoexec/initenv
Ja vastame hulga kĂŒsimustele, peamiselt vaikimisi vastustega.
*Kui kasutate krĂŒpteerimist, on oluline, et teenus cbsdd ei alustaks automaatselt, kuni olete kettad kĂ€sitsi vĂ”i automaatselt (meie nĂ€ites teeb seda zabbix) dekrĂŒpteerinud.
**Ma ei kasuta samuti 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
#NAT kruntide jaoks
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
## Bitcoin vÔrgusisene port 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
Tuleb mĂ€rkida, et tulemĂŒĂŒripoliitikate seadmine on samuti eraldi teema, seega ei hakka ma sĂŒvenema BLOCK ALL poliitika ja valgete loendite seadistamisse, seda saab teha lugedes vĂ”i ĂŒkskĂ”ik milline suur hulk artikleid, mis on saadaval Google'is.
Noh, meil on cbsd paigaldatud, aeg luua meie esimene tööhobune â Bitcoin daemon rakenduses!
cbsd jconstruct-tui

Siin nÀeme rakenduse loomise dialooge. PÀrast kÔigi vÀÀrtuste seadistamist loome!
Esimese rakenduse loomisel tuleb valida, mida kasutada rakenduste aluseks. Mina valin FreeBSD hoidlast kasutades kÀsku repo. See valik tehakse ainult konkreetse versiooni esimese rakenduse loomisel (saate majutada rakendusi igas versioonis, mis on vanem kui hostiversioon).
PĂ€rast seda, kui kĂ”ik on paigaldatud â kĂ€ivitame rakenduse!
# cbsd jstart bitcoind
Aga peame rakendusse paigaldama tarkvara.
# jls
JID IP Aadress Hostinimi Tee
1 192.168.0.1 bitcoind.space.com /zroot/jails/jails/bitcoindjexec bitcoind et pÀÀseda rakenduse terminali
ja juba rakenduses paigaldame 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
Rakendus Bitcoin on olemas, kuid me vajame anonĂŒĂŒmsust, kuna soovime ĂŒhendada mĂ”ned rakendused TORi vĂ”rku. Ja ĂŒldiselt on meie plaanides enamik rakendusest kahtlase tarkvaraga töötada ainult lĂ€bi proxy. TĂ€nu pf saabime NAT-i teatud IP-aadresside vahemikus lokaalses vĂ”rgus vĂ€lja lĂŒlitada ja lubame NAT-i ainult meie TOR-sĂ”lmele. Nii et isegi kui rakkude sisse pÀÀseb pahavara, ei saa ta tĂ”enĂ€oliselt ĂŒhendust vĂ€lismaailmaga, ja kui ta isegi suudab ĂŒhendust vĂ”tta, siis ei paljasta ta meie serveri IP-aadressi. SeetĂ”ttu loome veel ĂŒhe raku, et âedastadaâ teenuseid nagu â.onionâ-teenus ja nagu vahepealne internetiĂŒhenduse jaoks eraldi rakkude jaoks.
# 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 lokaalsel aadressil (kÔigile rakkudele on ligipÀÀsetav)
SOCKSPort 192.168.0.2:9050
Mida meil veel on puudu tÀielikuks Ônneks? Jah, me vajame teenust meie veebilehe jaoks, vÔib-olla isegi mitut. KÀivitame nginx-i, mis tÀidab reverse-proxy 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
Nii oleme 150 MB sÔltuvusi rakkudesse paigaldanud. Ja host on endiselt puhas.
Tagastame nginx-i seadistamise juurde hiljem, meil on vaja tÔsta veel kaks rakku meie makseteenuse jaoks nodejs ja rust ning veebirakenduse jaoks, mis mingil pÔhjusel töötab apache ja php peal, ja veel selle jaoks on vaja 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 on isoleeritud
seejÀrel laadime gitiga meie rakenduse 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. puuris.
siin anname arendajatele SSH juurdepÀÀsu otse puuri, nad teevad seal ise kÔik:
webapp:/@[16:02] # ee /etc/ssh/sshd_config
Port 2267 â muudame puuri SSH porti suvaliseks
webapp:/@[16:02] # sysrc sshd_enable=YES
webapp:/@[16:02] # service sshd start
Noh, teenus on kÀivitatud, jÀÀb ainult lisada reegel pf tulekahju sein
Vaadakem, millised IP-d meil puurides on ja kuidas meie "kohalik" vÀlja nÀeb
# jls
JID IP Aadress Hostnimi 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
ja kuna me juba siin oleme, lisame ka reegli reverse-proxy 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
NĂŒĂŒd natuke bitcoini kohta
Mida meil on â meil on veebirakendus, mis on vĂ€ljastpoolt kergesti ligipÀÀsetav ja see suhtleb kohapeal meie maksevĂ€ravaga. NĂŒĂŒd peame seadistama töökeskkonna, et suhelda bitcoini vĂ”rku â node bitcoind see on lihtsalt demoon, mis toetab kohalikku koopiat aktuaalsest plokiahelast. Sellel demonil on RPC ja rahakoti funktsioon, kuid rakenduste arendamiseks on olemas mugavamad "ĂŒmbrikud". Alguses otsustasime paigaldada electrum â see on CLI rahakott. kasutame kĂŒlmhoidlat meie bitcoiinide jaoks â need bitcoiinid, mida tuleb hoida "vĂ€lja" sĂŒsteemist, mis on kasutajatele kergesti ligipÀÀsetav ja ĂŒldse kaugel kĂ”igist. Sellel on ka GUI, nii et sama rahakotti kavatseme kasutada ka meie
lĂ€ptoppidel. Alguses kasutame electrumi avalike serveritega, hiljem ĂŒles tĂ”stame veel ĂŒhe kasti , 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 kastis
electrum:/@[8:53] # adduser
Kasutajanimi: wallet
TĂ€isnimi:
Uid (jĂ€tta tĂŒhjaks vaikevÀÀrtuse jaoks):
Sisselogimigrup [wallet]:
Sisselogimigrup on wallet. Kas kutsuda wallet teistesse gruppidesse? []:
Sisselogimisklass [default]:
Shell (sh csh tcsh nologin) [sh]: tcsh
Kodujuurkataloog [/home/wallet]:
Kodujuurkatalooge Ă”igused (jĂ€tta tĂŒhjaks vaikevÀÀrtuse jaoks):
Kasutage paroolipÔhist autentimist? [yes]: no
Kas lukustada konto pÀrast loomist? [no]:
Kasutajanimi : wallet
Parool :
TĂ€isnimi :
Uid : 1001
Klass :
RĂŒhmad : wallet
Kodu : /home/wallet
Kodu reĆŸiim :
Shell : /bin/tcsh
Lukustatud : no
OK? (yes/no): yes
adduser: INFO: Kasutaja (wallet) on edukalt lisatud kasutajate andmebaasi.
Lisada teine kasutaja? (yes/no): no
Head aega!
electrum:/@[8:53] # su walletelectrum:/@[8:53] # su wallet
wallet@electrum:/ % electrum-3.6 create
{
"msg": "Palun hoidke oma seeme turvalises kohas; kui te selle kaotate, ei saa te oma rahakotti taastada.",
"path": "/usr/home/wallet/.electrum/wallets/default_wallet",
"seed": "jealous win pig material ribbon young punch visual okay cactus random bird"
}NĂŒĂŒd on meil loodud rahakott.
wallet@electrum:/ % electrum-3.6 listaddresses
[
"18WEhbjvMLGRMfwudzUrUd25U5C7uZYkzE",
"14XHSejhxsZNDRtk4eFbqAX3L8rftzwQQU",
"1KQXaN8RXiCN1ne9iYngUWAr6KJ6d4pPas",
...
"1KeVcAwEYhk29qEyAfPwcBgF5mMMoy4qjw",
"18VaUuSeBr6T2GwpSHYF3XyNgLyLCt1SWk"
]wallet@electrum:/ % electrum-3.6 help
Meie on-chain rahakoti juurde saab tulevikus ĂŒhendust luua ainult piiratud ring inimesi. Et mitte avada juurdepÀÀsu vĂ€ljastpoolt selle rakenduse kaudu, toimub SSH kaudu ĂŒhendamine lĂ€bi TOR-i (selline detsentraliseeritud VPN variante). KĂ€ivitame rakenduse kaudu 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 rahakotiga rakendusse internetiĂŒhenduse vĂ€lja. Seame sellele IP-aadressi teise alamvĂ”rgu ulatusest, mis ei ole NAT-itud. Esiteks muudame /etc/pf.conf hostil
# ee /etc/pf.conf
JAIL_IP_POOL="192.168.0.0/24" muudame JAIL_IP_POOL="192.168.0.0/25", nii jÀÀvad kĂ”ik aadressid 192.168.0.126-255 ilma otsese internetiĂŒhenduseta. OmapĂ€rane tarkvaraline «air-gap» vĂ”rk. Ja NAT-reegel jÀÀb nagu oli
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
Laadime reeglid uuesti
# pfctl -f /etc/pf.conf
NĂŒĂŒd vĂ”tame ette meie rakenduse
# 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.200Hm, kuid nĂŒĂŒd lĂ”petab ka sĂŒsteem töötamise. Kuid me saame mÀÀrata sĂŒsteemi proxy. Kuid on ĂŒks aga, TORis on see SOCKS5 proxy, ja mugavuse huvides tahaksime ka HTTP proxy.
# 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] # teenus polipo start
Noh, nĂŒĂŒd on meie sĂŒsteemis kaks proxy-serverit, ja mĂ”lemad suunavad lĂ€bi TOR: socks5://192.168.0.2:9050 ja
NĂŒĂŒd saame seadistada meie raha 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:8123Noh, nĂŒĂŒd saab shell töötada proksi all. Kui soovime pakette installida, tuleb lisada /usr/local/etc/pkg.conf juurkontolt rakendusele
pkg_env: {
http_proxy: "http://my_proxy_ip:8123",
}NĂŒĂŒd on aeg lisada TOR-i peidetud teenus meie SSH-teenuse aadressina rakenduse rahakotis.
# 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 ĂŒhenduse aadress. Kontrollime kohalikust masinast. Aga kĂ”igepealt peate lisama meie SSH-vĂ”tme:
wallet@electrum:/ % mkdir ~/.ssh
wallet@electrum:/ % ee ~/.ssh/authorized_keys
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAG9Fk2Lqi4GQ8EXZrsH3EgSrVIQPQaAlS38MmJLBabihv9KHIDGXH7r018hxqLNNGbaJWO/wrWk7sG4T0yLHAbdQAFsMYof9kjoyuG56z0XZ8qaD/X/AjrhLMsIoBbUNj0AzxjKNlPJL4NbHsFwbmxGulKS0PdAD5oLcTQi/VnNdU7iFw== user@localJa kliendi Linux-masinast
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 (Selle toimimiseks on vajalik kohalik TOR-deemon, mis kuulab porti 9050)
user@local ~$ ssh remotebtc
Hosti 'mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion (<no hostip for proxy command>) ' autentsust ei saa kehtestada.
ECDSA vÔtme sÔrmejÀlg on SHA256:iW8FKjhVF4yyOZB1z4sBkzyvCM+evQ9cCL/EuWm0Du4.
Kas olete kindel, et soovite jĂ€tkata ĂŒhenduse loomist (jah/ei/[sĂ”rmejĂ€lg])? jah
Hoiatus: 'mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion' (ECDSA) on pĂŒsivalt lisatud tuntud hostide loendisse.
FreeBSD 12.1-RELEASE-p1 GENERIC
Ketta ruumi sÀÀstmiseks kodukataloogis, kompressige harva kasutatavaid faile kÀsuga "gzip filename".
-- Dru <genesis@istar.ca>
wallet@electrum:~ % logout
Edu!
Kohene ja mikromaksete jaoks on meil samuti vajalik node , see saab olema meie peamine tööriist Bitcoiniga. Me *, mida kavatseme kasutada daemonina, on , mis on tÀieÔiguslik HTTP (REST) liides ja vÔimaldab töötada nii off-chain kui on-chain tehingutega. c-lightning toimimiseks on vajalik bitcoind node.
*on erinevad rakendused erinevatel programmeerimiskeeltel Lightning Networki protokollile. Nendest, mida oleme testinud, tundus c-lightning (kirjutatud C-s) kÔige stabiilsem ja ressursitÔhusam
# 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
Kuni kĂ”ik vajalikud paketid kompileeritakse ja installitakse, loome RPC kasutaja lightningd ĂŒhes 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 navigeerimine rakkude vahel osutub mitte nii kaootiliseks, kui mĂ€rkida tööriist tmux, mis vĂ”imaldab ĂŒhe sessiooni raames luua mitmeid alam-sessioone terminalides. Analoog: ekraan

Noh, me ei taha paljastada meie sĂ”lme tĂ”elist IP-aadressi ja soovime kĂ”iki rahalisi tehinguid teha TOR-i kaudu. SeetĂ”ttu on meil veel ĂŒks .onion.
# 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 konfiguratsiooni c-lightning jaoks
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 likelightning@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 ~
kui samuti luua konfigureerimisfail bitcoin-cli jaoks, 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
Mina lightningd saab tööriista hallata lightning-cli, nÀiteks:
lightning-cli newaddr saada aadress uue sissetuleva makse jaoks
{
"address": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv",
"bech32": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv"
}lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all saada aadressile kÔik rahakoti raha (kÔik on-chain aadressid)
Samas ka kÀsklused off-chain operatsioonide jaoks lightning-cli invoice, lightning-cli listinvoices, lightning-cli pay jne.
Aga 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 Adresse 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
Meil on komplekt konteinerit, igaĂŒhel oma ligipÀÀsutasemeid nii sisenevatel kui ka kohaliku vĂ”rgu vajadustel.
# zfs list
NIMI KASUTATUD KĂTTESAADAV VIIT KINNITUSKOHT
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-dataNagu nĂ€ha, kasutab bitcoind kogu 190 GB ruumi. Ent mis siis, kui vajame veel ĂŒhte nodi testimiseks? Siin tuleb ZFS nagu tellitud. Koos cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com saame luua snapshot'i ja siduda uue raku selle snapshot'iga. Uuel rakul on tĂ€iesti oma ruum, kuid failisĂŒsteemis arvestatakse vaid erinevust praeguse oleku ja originaali vahel (sÀÀstame vĂ€hemalt 190 GB)
Iga rakku on oma eraldi ZFS andmestik ja see on ÀÀrmiselt mugav. teha erinevaid teisi toredaid asju, nÀiteks SSH kaudu snapshotide saatmine. Kirjeldamine jÀtame vahele, niigi on palju.
On samuti oluline mainida hosti kaugmonitorimise vajadust, meil on selleks .
B â turvalisus
Mis puudutab turvalisust, lÀhtume infrastruktuuri kontekstis vÔtmete ning pÔhimÔtete alusest:
Privaatsus â Standardsete UNIX-laadsete sĂŒsteemide tööriistad tagavad selle pĂ”himĂ”tte rakendamise. Me jagame loogiliselt juurdepÀÀsu igale loogiliselt eraldatud sĂŒsteemi elemendile â rakule. JuurdepÀÀs toimub standardsete kasutaja autentimistehnikate kaudu kasutajate isiklike vĂ”tmete jĂ€rgi. KĂ”ik suhtlus rakkude vahel ja kuni lĂ”ppkoodideni toimub krĂŒpteeritud vormis. Diskide krĂŒpteeringu tĂ”ttu saame olla muredeta andmete turvalisuse osas, kui vahetame ketast vĂ”i migreerime teisele serverile. Ainus kriitiline juurdepÀÀs on juurdepÀÀs host-sĂŒsteemile, kuna see juurdepÀÀs tagab tavaliselt andmete ligipÀÀsu konteinerite sees.
Terviklikkus â Selle pĂ”himĂ”tte tĂ€itmine toimub mitmes erinevas tasandis. Esiteks on oluline mĂ€rkida, et serverivarustuse, ECC-mĂ€lu ja ZFS puhul hoolt andmine andmete terviklikkuse eest bititasemel on juba âkastist vĂ€ljasâ. Kohesed snapshots vĂ”imaldavad varundamist igal ajal reaalajas. Mugavad rakkude eksportimise ja importimise tööriistad lihtsustavad rakkude replikatsiooni.
Saadavus â See on juba valikuline. See sĂ”ltub teie tuntusest ja sellest, kas teil on vaenlasi. Meie nĂ€ites tagasime rahakoti ligipÀÀsu ainult TOR-vĂ”rgust. Vajadusel saab tulemĂŒĂŒris blokeerida kĂ”ik ja lubada serverisse ligipÀÀsu ainult tunnelite (TOR vĂ”i VPN on teine kĂŒsimus) kaudu. Nii on server eraldatud vĂ€lisest maailmast nii palju kui vĂ”imalik, ja selle kĂ€ttesaadavust saame mĂ”jutada ainult meie ise.
Keeldumise vĂ”imalus â Ja see sĂ”ltub edasisest kasutusest ja Ă”igete kasutajaĂ”iguste poliitikate jĂ€rgimisest jne. Kuid Ă”ige lĂ€henemise korral auditeeritakse kĂ”ik kasutajate toimingud ning tĂ€nu krĂŒptograafilistele lahendustele on vĂ”imalik ĂŒheselt tuvastada, kes ja millal teatud toiminguid sooritas.
Muidugi pole kirjeldatud konfigureerimine absoluutselt nĂ€ide sellest, kuidas see alati olema peab; see on pigem ĂŒks nĂ€ide, kuidas see vĂ”ib olla, sĂ€ilitades vĂ€ga paindlikud skaleerimise ja kohandamise vĂ”imalused.
Aga kuidas on tÀieliku virtualiseerimisega?
TÀieliku virtualiseerimise kohta cbsd vahenditega saab. . Lisaks mainin, et tööde jaoks bhyve on vajalik aktiveerida mÔned tuuma parameetrid.
# cat /etc/rc.conf
...
kld_list="vmm if_tap if_bridge nmdm"
...# cat /boot/loader.conf
...
vmm_load="YES"
...Nii et kui peaks olema vajadus Dockerisse minna, siis tĂ”stame ĂŒles mĂ”ne debiani ja edasi!

Ja see ongi kÔik.
TĂ”enĂ€oliselt on see kĂ”ik, mida ma soovisin jagada. Kui teile artikkel meeldis, siis vĂ”ib mulle Bitcoin'ide saatmiseks kirjutada â . Kui soovite proovida rakendusi ja teil on veidi Bitcoine, siis vĂ”ite kĂŒlastada minu .
Allikas: habr.com
