Það gerðist þannig að ég er umsjónarmaður tölvukerfa og netkerfa í starfi (í stuttu máli: kerfisstjóri), og ég hafði tækifæri til að segja prófessor í rúm 10 ár. starfsemi margs konar kerfa, þar á meðal þeirra sem krefjast [öfgafullra] öryggisráðstafana. Það kom líka fyrir að fyrir nokkru fannst mér þetta áhugavert dev
, svo ég átti leið framhjá). En ég er ekki að tala um þróun, ég er að tala um öruggt og skilvirkt umhverfi fyrir forrit.
Fjármálatækni (fintech) farðu við hlið upplýsingaöryggis (infosec) og sá fyrri getur virkað án þess síðari, en ekki lengi. Þess vegna vil ég deila reynslu minni og verkfærasettinu sem ég nota, sem inniheldur bæði fintechOg infosec, og á sama tíma, og er einnig hægt að nota í víðtækari eða allt öðrum tilgangi. Í þessari grein mun ég segja þér ekki svo mikið um Bitcoin, heldur um innviðalíkanið fyrir þróun og rekstur fjármálaþjónustu (og ekki aðeins) - í einu orði, þá þjónustu þar sem "B" skiptir máli. Þetta á bæði við um Bitcoin kauphöllina og um dæmigerðasta fyrirtækjadýragarðinn fyrir þjónustu lítils fyrirtækis sem ekki tengist Bitcoin á nokkurn hátt.
Ég vil taka það fram að ég er fylgjandi meginreglunum "hafðu það bara heimskulegt einfalt" и "minna er meira", því mun bæði greinin og það sem í henni er lýst hafa þá eiginleika sem þessar meginreglur snúast um.
Ímynduð atburðarás: Við skulum skoða allt með því að nota dæmi um bitcoin skipti. Við ákváðum að hefja skiptingu á rúblum, dollurum, evrum fyrir bitcoins og til baka, og við höfum nú þegar vinnulausn, en fyrir aðra stafræna peninga eins og qiwi og webmoney, þ.e. Við höfum lokað öllum lagalegum atriðum, við erum með tilbúið forrit sem þjónar sem greiðslugátt fyrir rúblur, dollara og evrur og önnur greiðslukerfi. Það er tengt bankareikningum okkar og hefur einhvers konar API fyrir lokaforritin okkar. Við erum líka með vefforrit sem virkar sem skipti fyrir notendur, tja, eins og dæmigerður qiwi eða webmoney reikningur - búðu til reikning, bættu við korti og svo framvegis. Það hefur samskipti við gáttarforritið okkar, að vísu í gegnum REST API á staðnum. Og svo ákváðum við að tengja bitcoins og á sama tíma uppfæra innviðina, vegna þess að... Upphaflega var allt sett upp í flýti á sýndarboxum á skrifstofunni undir borðinu... byrjað var að nota síðuna og við fórum að hafa áhyggjur af spennutíma og afköstum.
Svo, við skulum byrja á aðalatriðinu - að velja netþjón. Vegna þess að fyrirtækið í okkar dæmi er lítið og við treystum hýsingaraðilanum (OVH) sem við munum velja
Uppsetning netþjóns
Hér er allt einfalt. Við veljum þann vélbúnað sem hentar þörfum okkar. Veldu síðan FreeBSD myndina. Jæja, eða við tengjum (ef um er að ræða annan hýsingaraðila og okkar eigin vélbúnað) í gegnum IPMI eða með skjá og gefum .iso FreeBSD myndinni inn í niðurhalið. Fyrir hljómsveitaruppsetningu nota ég
Uppsetning kerfisins á sér stað á staðlaðan hátt, ég mun ekki dvelja við þetta, ég mun aðeins taka fram að áður en notkun er hafin er þess virði að borga eftirtekt til herða valkosti sem það býður upp á bsdinstaller
í lok uppsetningar (ef þú setur kerfið upp sjálfur):
Það er
Einnig er hægt að virkja ofangreindar færibreytur á þegar uppsettu kerfi. Til að gera þetta þarftu að breyta bootloader skránni og virkja kjarnabreytur. *ee er ritstjóri eins og þessi í BSD
# ee /etc/rc.conf
...
#sec hard
clear_tmp_enable="YES"
syslogd_flags="-ss"
sendmail_enable="NONE"
# ee /etc/sysctl.conf
...
#sec hard
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_proc_debug=0
kern.randompid=$(jot -r 1 9999)
security.bsd.stack_guard_page=1
Þú ættir líka að ganga úr skugga um að þú sért með nýjustu útgáfuna af kerfinu uppsett, og
Síðan stillum við aide
, fylgjast með stöðu kerfisstillingarskráa. Þú getur lesið meira ítarlega
pkg install aide
og breyttu crontab okkar
crontab -e
06 01 * * 0-6 /root/chkaide.sh
#! /bin/sh
#chkaide.sh
MYDATE=`date +%Y-%m-%d`
MYFILENAME="Aide-"$MYDATE.txt
/bin/echo "Aide check !! `date`" > /tmp/$MYFILENAME
/usr/local/bin/aide --check > /tmp/myAide.txt
/bin/cat /tmp/myAide.txt|/usr/bin/grep -v failed >> /tmp/$MYFILENAME
/bin/echo "**************************************" >> /tmp/$MYFILENAME
/usr/bin/tail -20 /tmp/myAide.txt >> /tmp/$MYFILENAME
/bin/echo "****************DONE******************" >> /tmp/$MYFILENAME
Við tökum með
sysrc auditd_enable=YES
# service auditd start
Hvernig á að stjórna þessu máli er fullkomlega lýst í
Nú endurræsum við og höldum áfram að hugbúnaðinum á þjóninum. Hver þjónn er yfirsýn fyrir gáma eða fullar sýndarvélar. Þess vegna er mikilvægt að örgjörvinn styðji VT-x og EPT ef við ætlum að nota fulla sýndarvæðingu.
Til að stjórna gámum og sýndarvélum sem ég nota
Gámar? Docker aftur eða hvað?
En nei. cbsd
að skipuleggja þessa ílát, sem kallast frumur.
Búrið er ákaflega áhrifarík lausn til að byggja upp innviði í margvíslegum tilgangi, þar sem að lokum er þörf á algjörri einangrun einstakra þjónustu eða ferla. Í meginatriðum er það klón af hýsingarkerfinu, en það krefst ekki fullrar sýndarvæðingar vélbúnaðar. Og þökk sé þessu er fjármagni ekki varið í „gesta stýrikerfið“ heldur aðeins í þá vinnu sem verið er að framkvæma. Þegar frumur eru notaðar fyrir innri þarfir, er þetta mjög þægileg lausn fyrir bestu auðlindanotkun - fullt af hólfum á einum vélbúnaðarþjóni getur hver fyrir sig notað allt miðlaraauðlindina ef þörf krefur. Miðað við að venjulega þurfa mismunandi undirþjónustur viðbótar. auðlindir á mismunandi tímum geturðu dregið út hámarksafköst frá einum netþjóni ef þú skipuleggur og kemur jafnvægi á frumurnar á milli netþjóna. Ef nauðsyn krefur er einnig hægt að setja hólf á auðlindina sem notuð er.
Hvað með fulla sýndarvæðingu?
Eftir því sem ég best veit cbsd
styður við vinnu bhyve
og XEN hypervisors. Ég hef aldrei notað þann seinni, en sá fyrri er tiltölulega nýr bhyve
í dæminu hér að neðan.
Að setja upp og stilla gestgjafaumhverfið
Við notum FS
gpart add -t freebsd-zfs /dev/ada0
/dev/ada0p4 added!
bæta disksneiðingi við plássið sem eftir er
geli init /dev/ada0p4
sláðu inn dulkóðunarlykilorðið okkar
geli attach /dev/ada0p4
Við sláum inn lykilorðið aftur og við erum með tæki /dev/ada0p4.eli - þetta er dulkóðaða rýmið okkar. Síðan endurtökum við það sama fyrir /dev/ada1 og restina af diskunum í fylkinu. Og við búum til nýjan
zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli
- Jæja, við erum með lágmarks bardagabúnaðinn tilbúinn. Spegluð array af diskum ef einn af þremur bilar.
Að búa til gagnasafn á nýjum „laug“
zfs create vms/jails
pkg install cbsd
— við settum af stað teymi og settum upp stjórnun fyrir frumurnar okkar.
Eftir cbsd
uppsett, það þarf að frumstilla:
# env workdir="/vms/jails" /usr/local/cbsd/sudoexec/initenv
Jæja, við svörum fullt af spurningum, aðallega með sjálfgefnum svörum.
*Ef þú ert að nota dulkóðun er mikilvægt að púkinn cbsdd
byrjaði ekki sjálfkrafa fyrr en þú afkóðar diskana handvirkt eða sjálfkrafa (í okkar dæmi er þetta gert af zabbix)
**Ég nota heldur ekki NAT frá cbsd
, og ég stilla það sjálfur í pf
.
# sysrc pf_enable=YES
# ee /etc/pf.conf
IF_PUBLIC="em0"
IP_PUBLIC="1.23.34.56"
JAIL_IP_POOL="192.168.0.0/24"
#WHITE_CL="{ 127.0.0.1 }"
icmp_types="echoreq"
set limit { states 20000, frags 20000, src-nodes 20000 }
set skip on lo0
scrub in all
#NAT for jails
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
## Bitcoin network port forward
IP_JAIL="192.168.0.1"
PORT_JAIL="{8333}"
rdr pass on $IF_PUBLIC proto tcp from any to $IP_PUBLIC port $PORT_JAIL -> $IP_JAIL
# service pf start
# pfctl -f /etc/pf.conf
Uppsetning eldveggsstefnu er líka sérstakt umræðuefni, svo ég mun ekki fara djúpt í að setja upp LOKA ALLA stefnuna og setja upp hvítlista, þú getur gert það með því að lesa
Jæja ... við erum með cbsd uppsett, það er kominn tími til að búa til fyrsta vinnuhestinn okkar - búraði Bitcoin púkann!
cbsd jconstruct-tui
Hér sjáum við frumusköpunargluggann. Eftir að öll gildin hafa verið sett, skulum við búa til!
Þegar þú býrð til fyrsta reitinn þinn ættir þú að velja hvað á að nota sem grunn fyrir frumurnar. Ég vel dreifingu úr FreeBSD geymslunni með skipuninni repo
. Þetta val er aðeins gert þegar fyrsta hólfið í tiltekinni útgáfu er búið til (þú getur hýst frumur af hvaða útgáfu sem er eldri en hýsilútgáfan).
Eftir að allt er sett upp ræsum við búrið!
# cbsd jstart bitcoind
En við þurfum að setja upp hugbúnað í búrinu.
# jls
JID IP Address Hostname Path
1 192.168.0.1 bitcoind.space.com /zroot/jails/jails/bitcoind
jexec bitcoind
til að komast inn í farsímaborðið
og þegar inni í klefanum setjum við upp hugbúnaðinn með ósjálfstæði hans (hýsilkerfið okkar er enn hreint)
bitcoind:/@[15:25] # pkg install bitcoin-daemon bitcoin-utils
bitcoind:/@[15:30] # sysrc bitcoind_enable=YES
bitcoind:/@[15:30] # service bitcoind start
Það er Bitcoin í búrinu, en við þurfum nafnleynd vegna þess að við viljum tengjast sumum búrum í gegnum TOP netið. Almennt ætlum við að keyra flestar frumur með grunsamlegum hugbúnaði aðeins í gegnum proxy. Þökk sé pf
Þú getur slökkt á NAT fyrir ákveðið úrval af IP tölum á staðarnetinu og leyft NAT aðeins fyrir TOR hnútinn okkar. Þannig að jafnvel þótt spilliforrit komist inn í klefann mun það líklegast ekki hafa samskipti við umheiminn og ef það gerist mun það ekki sýna IP netþjónsins okkar. Þess vegna búum við til annan reit til að „framsenda“ þjónustu sem „.onion“ þjónustu og sem umboð fyrir aðgang að internetinu til einstakra hólfa.
# cbsd jsconstruct-tui
# cbsd jstart tor
# jexec tor
tor:/@[15:38] # pkg install tor
tor:/@[15:38] # sysrc tor_enable=YES
tor:/@[15:38] # ee /usr/local/etc/tor/torrc
Stillt á að hlusta á staðbundnu heimilisfangi (í boði fyrir allar frumur)
SOCKSPort 192.168.0.2:9050
Hvað annað þurfum við fyrir fullkomna hamingju? Já, við þurfum þjónustu fyrir vefinn okkar, kannski fleiri en eina. Við skulum ræsa nginx, sem mun virka sem öfugur umboð og sjá um að endurnýja Let's Encrypt vottorð
# cbsd jsconstruct-tui
# cbsd jstart nginx-rev
# jexec nginx-rev
nginx-rev:/@[15:47] # pkg install nginx py36-certbot
Og svo settum við 150 MB af ósjálfstæði í búr. Og gestgjafinn er enn hreinn.
Snúum okkur aftur að uppsetningu nginx síðar, við þurfum að hækka tvær hólf í viðbót fyrir greiðslugáttina okkar á nodejs og ryð og vefforrit, sem af einhverjum ástæðum er í Apache og PHP, og hið síðarnefnda þarf líka MySQL gagnagrunn.
# cbsd jsconstruct-tui
# cbsd jstart paygw
# jexec paygw
paygw:/@[15:55] # pkg install git node npm
paygw:/@[15:55] # curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
...og önnur 380 MB af pökkum einangruðum
Næst halum við niður forritinu okkar með git og ræsum það.
# cbsd jsconstruct-tui
# cbsd jstart webapp
# jexec webapp
webapp:/@[16:02] # pkg install mariadb104-server apache24 php74 mod_php74 php74-pdo_mysql
450 MB pakkar. í búri.
hér gefum við þróunaraðilanum aðgang í gegnum SSH beint að klefanum, þeir munu gera allt þar sjálfir:
webapp:/@[16:02] # ee /etc/ssh/sshd_config
Port 2267
— breyttu SSH tengi frumunnar í hvaða handahófskennt sem er
webapp:/@[16:02] # sysrc sshd_enable=YES
webapp:/@[16:02] # service sshd start
Jæja, þjónustan er í gangi, það eina sem er eftir er að bæta reglunni við pf
eldvegg
Við skulum sjá hvaða IP frumur okkar hafa og hvernig „staðsvæði“ okkar lítur almennt út.
# jls
JID IP Address Hostname Path
1 192.168.0.1 bitcoind.space.com /zroot/jails/jails/bitcoind
2 192.168.0.2 tor.space.com /zroot/jails/jails/tor
3 192.168.0.3 nginx-rev.space.com /zroot/jails/jails/nginx-rev
4 192.168.0.4 paygw.space.com /zroot/jails/jails/paygw
5 192.168.0.5 webapp.my.domain /zroot/jails/jails/webapp
og bæta við reglu
# ee /etc/pf.conf
## SSH for web-Devs
IP_JAIL="192.168.0.5"
PORT_JAIL="{ 2267 }"
rdr pass on $IF_PUBLIC proto tcp from any to $IP_PUBLIC port $PORT_JAIL -> $IP_JAIL
Jæja, þar sem við erum hér, skulum við líka bæta við reglu fyrir öfugt umboð:
## web-ports for nginx-rev
IP_JAIL="192.168.0.3"
PORT_JAIL="{ 80, 443 }"
rdr pass on $IF_PUBLIC proto tcp from any to $IP_PUBLIC port $PORT_JAIL -> $IP_JAIL
# pfctl -f /etc/pf.conf
Jæja, nú aðeins um bitcoins
Það sem við höfum er að við erum með vefforrit sem er afhjúpað að utan og það talar á staðnum við greiðslugáttina okkar. Nú þurfum við að undirbúa vinnuumhverfi fyrir samskipti við Bitcoin netið sjálft - hnútinn bitcoind
það er bara púkinn sem heldur staðbundnu eintaki blockchain uppfærðu. Þessi púki hefur RPC og veskisvirkni, en það eru þægilegri „umbúðir“ fyrir þróun forrita. Til að byrja með ákváðum við að setja electrum
er CLI veski.
fartölvur. Í bili munum við nota Electrum með opinberum netþjónum, og síðar munum við hækka það í öðrum reit
# cbsd jsconstruct-tui
# cbsd jstart electrum
# jexec electrum
electrum:/@[8:45] # pkg install py36-electrum
önnur 700 MB af hugbúnaði í búrinu okkar
electrum:/@[8:53] # adduser
Username: wallet
Full name:
Uid (Leave empty for default):
Login group [wallet]:
Login group is wallet. Invite wallet into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: tcsh
Home directory [/home/wallet]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]:
Username : wallet
Password : <disabled>
Full Name :
Uid : 1001
Class :
Groups : wallet
Home : /home/wallet
Home Mode :
Shell : /bin/tcsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (wallet) to the user database.
Add another user? (yes/no): no
Goodbye!
electrum:/@[8:53] # su wallet
electrum:/@[8:53] # su wallet
wallet@electrum:/ % electrum-3.6 create
{
"msg": "Please keep your seed in a safe place; if you lose it, you will not be able to restore your wallet.",
"path": "/usr/home/wallet/.electrum/wallets/default_wallet",
"seed": "jealous win pig material ribbon young punch visual okay cactus random bird"
}
Nú höfum við búið til veski.
wallet@electrum:/ % electrum-3.6 listaddresses
[
"18WEhbjvMLGRMfwudzUrUd25U5C7uZYkzE",
"14XHSejhxsZNDRtk4eFbqAX3L8rftzwQQU",
"1KQXaN8RXiCN1ne9iYngUWAr6KJ6d4pPas",
...
"1KeVcAwEYhk29qEyAfPwcBgF5mMMoy4qjw",
"18VaUuSeBr6T2GwpSHYF3XyNgLyLCt1SWk"
]
wallet@electrum:/ % electrum-3.6 help
Til okkar á keðjunni Aðeins takmarkaður fjöldi fólks mun geta tengst veskinu héðan í frá. Til að opna ekki aðgang að þessum klefi utan frá munu tengingar í gegnum SSH eiga sér stað í gegnum TOP (dreifð útgáfa af VPN). Við ræsum SSH í klefanum, en snertum ekki pf.conf okkar á hýsilinn.
electrum:/@[9:00] # sysrc sshd_enable=YES
electrum:/@[9:00] # service sshd start
Nú skulum við slökkva á farsímanum með netaðgangi vesksins. Við skulum gefa því IP tölu frá öðru undirnetrými sem er ekki NATed. Fyrst skulum við breyta /etc/pf.conf
á gestgjafanum
# ee /etc/pf.conf
JAIL_IP_POOL="192.168.0.0/24"
breytum því í JAIL_IP_POOL="192.168.0.0/25"
, þannig að öll heimilisföng 192.168.0.126-255 munu ekki hafa beinan aðgang að internetinu. Eins konar hugbúnaðar „loft-gap“ net. Og NAT reglan er áfram eins og hún var
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
Ofhleðsla reglna
# pfctl -f /etc/pf.conf
Nú skulum við taka á klefanum okkar
# cbsd jconfig jname=electrum
jset mode=quiet jname=electrum ip4_addr="192.168.0.200"
Remove old IP: /sbin/ifconfig em0 inet 192.168.0.6 -alias
Setup new IP: /sbin/ifconfig em0 inet 192.168.0.200 alias
ip4_addr: 192.168.0.200
Hmm, en núna hættir kerfið sjálft að virka hjá okkur. Hins vegar getum við tilgreint umboð kerfis. En það er eitt, á TOR er það SOCKS5 umboð, og til þæginda viljum við líka fá HTTP umboð.
# cbsd jsconstruct-tui
# cbsd jstart polipo
# jexec polipo
polipo:/@[9:28] # pkg install polipo
polipo:/@[9:28] # ee /usr/local/etc/polipo/config
socksParentProxy = "192.168.0.2:9050"
socksProxyType = socks5
polipo:/@[9:42] # sysrc polipo_enable=YES
polipo:/@[9:43] # service polipo start
Jæja, nú eru tveir proxy-þjónar í kerfinu okkar og báðir gefa út í gegnum TOR: socks5: //192.168.0.2:9050 og
Nú getum við stillt veskisumhverfið okkar
# jexec electrum
electrum:/@[9:45] # su wallet
wallet@electrum:/ % ee ~/.cshrc
#in the end of file proxy config
setenv http_proxy http://192.168.0.6:8123
setenv https_proxy http://192.168.0.6:8123
Jæja, nú mun skelin vinna undir umboði. Ef við viljum setja upp pakka, þá ættum við að bæta við /usr/local/etc/pkg.conf
frá undir rót búrsins
pkg_env: {
http_proxy: "http://my_proxy_ip:8123",
}
Jæja, nú er kominn tími til að bæta við TOR falinni þjónustu sem heimilisfang SSH þjónustu okkar í veski klefanum.
# jexec tor
tor:/@[9:59] # ee /usr/local/etc/tor/torrc
HiddenServiceDir /var/db/tor/electrum/
HiddenServicePort 22 192.168.0.200:22
tor:/@[10:01] # mkdir /var/db/tor/electrum
tor:/@[10:01] # chown -R _tor:_tor /var/db/tor/electrum
tor:/@[10:01] # chmod 700 /var/db/tor/electrum
tor:/@[10:03] # service tor restart
tor:/@[10:04] # cat /var/db/tor/electrum/hostname
mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion
Þetta er netfangið okkar. Við skulum athuga frá staðbundinni vél. En fyrst þurfum við að bæta við SSH lyklinum okkar:
wallet@electrum:/ % mkdir ~/.ssh
wallet@electrum:/ % ee ~/.ssh/authorized_keys
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAG9Fk2Lqi4GQ8EXZrsH3EgSrVIQPQaAlS38MmJLBabihv9KHIDGXH7r018hxqLNNGbaJWO/wrWk7sG4T0yLHAbdQAFsMYof9kjoyuG56z0XZ8qaD/X/AjrhLMsIoBbUNj0AzxjKNlPJL4NbHsFwbmxGulKS0PdAD5oLcTQi/VnNdU7iFw== user@local
Jæja, frá Linux biðlara vél
user@local ~$ nano ~/.ssh/config
#remote electrum wallet
Host remotebtc
User wallet
Port 22
Hostname mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion
ProxyCommand /bin/ncat --proxy localhost:9050 --proxy-type socks5 %h %p
Tengjumst (Til þess að þetta virki þarftu staðbundinn TOR púkk sem hlustar á 9050)
user@local ~$ ssh remotebtc
The authenticity of host 'mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:iW8FKjhVF4yyOZB1z4sBkzyvCM+evQ9cCL/EuWm0Du4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion' (ECDSA) to the list of known hosts.
FreeBSD 12.1-RELEASE-p1 GENERIC
To save disk space in your home directory, compress files you rarely
use with "gzip filename".
-- Dru <[email protected]>
wallet@electrum:~ % logout
Árangur!
Til að vinna með skyndi- og örgreiðslum þurfum við líka hnút c-lightning
sem þarf til að virka bitcoind
en já.
*Það eru mismunandi útfærslur á Lightning Network samskiptareglunum á mismunandi tungumálum. Af þeim sem við prófuðum virtist c-elding (skrifuð í C) stöðugust og auðlindahagkvæmust
# cbsd jsconstruct-tui
# cbsd jstart cln
# jexec cln
lightning:/@[10:23] # adduser
Username: lightning
...
lightning:/@[10:24] # pkg install git
lightning:/@[10:23] # su lightning
cd ~ && git clone https://github.com/ElementsProject/lightning
lightning@lightning:~ % exit
lightning:/@[10:30] # cd /home/lightning/lightning/
lightning:/home/lightning/lightning@[10:31] # pkg install autoconf automake gettext git gmp gmake libtool python python3 sqlite3 libsodium py36-mako bash bitcoin-utils
lightning:/home/lightning/lightning@[10:34] # ./configure && gmake && gmake install
Þó að allt sem nauðsynlegt sé sé tekið saman og sett upp, skulum við búa til RPC notanda fyrir lightningd
в bitcoind
# jexec bitcoind
bitcoind:/@[10:36] # ee /usr/local/etc/bitcoin.conf
rpcbind=192.168.0.1
rpcuser=test
rpcpassword=test
#allow only c-lightning
rpcallowip=192.168.0.7/32
bitcoind:/@[10:39] # service bitcoind restart
Óskipulegur skipting mín á milli frumna reynist ekki vera svo óskipulegur ef þú tekur eftir notagildinu tmux
, sem gerir þér kleift að búa til margar lokaundirlotur innan einni lotu. Analog: screen
Þannig að við viljum ekki gefa upp raunverulegan IP hnútsins okkar og við viljum framkvæma öll fjárhagsleg viðskipti í gegnum TOP. Því er ekki þörf á öðrum .lauk.
# jexec tor
tor:/@[9:59] # ee /usr/local/etc/tor/torrc
HiddenServiceDir /var/db/tor/cln/
HiddenServicePort 9735 192.168.0.7:9735
tor:/@[10:01] # mkdir /var/db/tor/cln
tor:/@[10:01] # chown -R _tor:_tor /var/db/tor/cln
tor:/@[10:01] # chmod 700 /var/db/tor/cln
tor:/@[10:03] # service tor restart
tor:/@[10:04] # cat /var/db/tor/cln/hostname
en5wbkavnytti334jc5uzaudkansypfs6aguv6kech4hbzpcz2ove3yd.onion
Nú skulum við búa til stillingar fyrir c-lightning
lightning:/home/lightning/lightning@[10:31] # su lightning
lightning@lightning:~ % mkdir .lightning
lightning@lightning:~ % ee .lightning/config
alias=My-LN-Node
bind-addr=192.168.0.7:9735
rgb=ff0000
announce-addr=en5wbkavnytti334jc5uzaudkansypfs6aguv6kech4hbzpcz2ove3yd.onion:9735
network=bitcoin
log-level=info
fee-base=0
fee-per-satoshi=1
proxy=192.168.0.2:9050
log-file=/home/lightning/.lightning/c-lightning.log
min-capacity-sat=200000
# sparko plugin
# https://github.com/fiatjaf/lightningd-gjson-rpc/tree/master/cmd/sparko
sparko-host=192.168.0.7
sparko-port=9737
sparko-tls-path=sparko-tls
#sparko-login=mywalletusername:mywalletpassword
#sparko-keys=masterkey;secretread:+listchannels,+listnodes;secretwrite:+invoice,+listinvoices,+delinvoice,+decodepay,+waitpay,+waitinvoice
sparko-keys=masterkey;secretread:+listchannels,+listnodes;ultrawrite:+invoice,+listinvoices,+delinvoice,+decodepay,+waitpay,+waitinvoice
# for the example above the initialization logs (mixed with lightningd logs) should print something like
lightning@lightning:~ % mkdir .lightning/plugins
lightning@lightning:~ % cd .lightning/plugins/
lightning@lightning:~/.lightning/plugins:% fetch https://github.com/fiatjaf/sparko/releases/download/v0.2.1/sparko_full_freebsd_amd64
lightning@lightning:~/.lightning/plugins % mkdir ~/.lightning/sparko-tls
lightning@lightning:~/.lightning/sparko-tls % cd ~/.lightning/sparko-tls
lightning@lightning:~/.lightning/sparko-tls % openssl genrsa -out key.pem 2048
lightning@lightning:~/.lightning/sparko-tls % openssl req -new -x509 -sha256 -key key.pem -out cert.pem -days 3650
lightning@lightning:~/.lightning/plugins % chmod +x sparko_full_freebsd_amd64
lightning@lightning:~/.lightning/plugins % mv sparko_full_freebsd_amd64 sparko
lightning@lightning:~/.lightning/plugins % cd ~
þú þarft líka að búa til stillingarskrá fyrir bitcoin-cli, tól sem hefur samskipti við bitcoind
lightning@lightning:~ % mkdir .bitcoin
lightning@lightning:~ % ee .bitcoin/bitcoin.conf
rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=test
athuga
lightning@lightning:~ % bitcoin-cli echo "test"
[
"test"
]
sjósetja lightningd
lightning@lightning:~ % lightningd --daemon
Sjálfur lightningd
þú getur stjórnað tólinu lightning-cli
, til dæmis:
lightning-cli newaddr
fáðu heimilisfangið fyrir nýja greiðslu
{
"address": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv",
"bech32": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv"
}
lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all
sendu alla peningana í veskinu á heimilisfangið (öll heimilisföng í keðju)
Einnig skipanir fyrir aðgerðir utan keðju lightning-cli invoice
, lightning-cli listinvoices
, lightning-cli pay
o.s.frv.
Jæja, fyrir samskipti við forritið höfum við REST Api
curl -k https://192.168.0.7:9737/rpc -d '{"method": "pay", "params": ["lnbc..."]}' -H 'X-Access masterkey'
Summa upp
# jls
JID IP Address Hostname Path
1 192.168.0.1 bitcoind.space.com /zroot/jails/jails/bitcoind
2 192.168.0.2 tor.space.com /zroot/jails/jails/tor
3 192.168.0.3 nginx-rev.space.com /zroot/jails/jails/nginx-rev
4 192.168.0.4 paygw.space.com /zroot/jails/jails/paygw
5 192.168.0.5 webapp.my.domain /zroot/jails/jails/webapp
7 192.168.0.200 electrum.space.com /zroot/jails/jails/electrum
8 192.168.0.6 polipo.space.com /zroot/jails/jails/polipo
9 192.168.0.7 lightning.space.com /zroot/jails/jails/cln
Við höfum sett af gámum, hver með sínu aðgangsstigi bæði frá og til staðarnetsins.
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 279G 1.48T 88K /zroot
zroot/ROOT 1.89G 1.48T 88K none
zroot/ROOT/default 1.89G 17.6G 1.89G /
zroot/home 88K 1.48T 88K /home
zroot/jails 277G 1.48T 404M /zroot/jails
zroot/jails/bitcoind 190G 1.48T 190G /zroot/jails/jails-data/bitcoind-data
zroot/jails/cln 653M 1.48T 653M /zroot/jails/jails-data/cln-data
zroot/jails/electrum 703M 1.48T 703M /zroot/jails/jails-data/electrum-data
zroot/jails/nginx-rev 190M 1.48T 190M /zroot/jails/jails-data/nginx-rev-data
zroot/jails/paygw 82.4G 1.48T 82.4G /zroot/jails/jails-data/paygw-data
zroot/jails/polipo 57.6M 1.48T 57.6M /zroot/jails/jails-data/polipo-data
zroot/jails/tor 81.5M 1.48T 81.5M /zroot/jails/jails-data/tor-data
zroot/jails/webapp 360M 1.48T 360M /zroot/jails/jails-data/webapp-data
Eins og þú sérð tekur bitcoind allt 190 GB af plássi. Hvað ef við þurfum annan hnút fyrir próf? Þetta er þar sem ZFS kemur sér vel. Með hjálp cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com
þú getur búið til skyndimynd og hengt nýjan reit við þessa skyndimynd. Nýja klefinn mun hafa sitt eigið pláss, en aðeins munurinn á núverandi ástandi og upprunalegu verður tekinn með í reikninginn í skráarkerfinu (við munum spara að minnsta kosti 190 GB)
Hver klefi er sitt eigið ZFS gagnasafn og þetta er mjög þægilegt.
Það er líka athyglisvert að þörf sé á fjareftirliti með gestgjafanum, í þessum tilgangi höfum við
B - öryggi
Varðandi öryggi skulum við byrja á lykilreglunum í samhengi við innviði:
Trúnaður — Staðlað verkfæri UNIX-líkra kerfa tryggja framkvæmd þessarar meginreglu. Við aðskiljum rökrétt aðgang að hverjum rökfræðilega aðskildum þætti kerfisins - reit. Aðgangur er veittur með hefðbundinni notendavottun með persónulegum lyklum notenda. Öll samskipti milli og til lokafrumna eiga sér stað á dulkóðuðu formi. Þökk sé dulkóðun diska þurfum við ekki að hafa áhyggjur af öryggi gagna þegar skipt er um disk eða flutt á annan netþjón. Eini mikilvægi aðgangurinn er aðgangur að hýsingarkerfinu, þar sem slíkur aðgangur veitir almennt aðgang að gögnum í gámum.
Heiðarleiki „Framkvæmd þessarar meginreglu á sér stað á nokkrum mismunandi stigum. Í fyrsta lagi er mikilvægt að hafa í huga að þegar um er að ræða vélbúnað miðlara, ECC minni, sér ZFS þegar „út úr kassanum“ um gagnaheilleika á stigi upplýsingabita. Skyndimyndir gera þér kleift að taka öryggisafrit hvenær sem er á flugi. Þægileg frumuútflutnings-/innflutningstæki gera frumuafritun einfalda.
Framboð - Þetta er nú þegar valfrjálst. Fer eftir frægð þinni og þeirri staðreynd að þú ert með hatursmenn. Í dæminu okkar tryggðum við að veskið væri eingöngu aðgengilegt frá TOP netinu. Ef nauðsyn krefur geturðu lokað á allt á eldveggnum og leyft aðgang að þjóninum eingöngu í gegnum göng (TOR eða VPN er annað mál). Þannig verður netþjónninn eins og kostur er lokaður frá umheiminum og aðeins við sjálf getum haft áhrif á framboð hans.
Ómögulegt að synja - Og þetta veltur á frekari rekstri og fylgni við réttar reglur um notendaréttindi, aðgang o.s.frv. En með réttri nálgun eru allar notendaaðgerðir endurskoðaðar og þökk sé dulmálslausnum er hægt að bera kennsl á með ótvíræðum hætti hver gerði ákveðnar aðgerðir og hvenær.
Að sjálfsögðu er uppsetningin sem lýst er ekki algjört dæmi um hvernig hún ætti alltaf að vera, hún er frekar eitt dæmi um hvernig hún getur verið, á sama tíma og hún heldur mjög sveigjanlegum stærðar- og sérsniðmöguleikum.
Hvað með fulla sýndarvæðingu?
Um fulla sýndarvæðingu með því að nota cbsd geturðu bhyve
Þú þarft að virkja suma kjarnavalkosti.
# cat /etc/rc.conf
...
kld_list="vmm if_tap if_bridge nmdm"
...
# cat /boot/loader.conf
...
vmm_load="YES"
...
Þannig að ef þú þarft skyndilega að ræsa tengikví, settu þá upp debian og farðu!
Það er allt og sumt
Ég held að það sé allt sem ég vildi deila. Ef þér líkaði við greinina, þá geturðu sent mér bitcoins -
Heimild: www.habr.com