Dit het so gebeur dat ek 'n administrateur van rekenaarstelsels en netwerke van beroep is (in kort: 'n stelseladministrateur), en ek het kans gehad om prof. aktiwiteite van 'n wye verskeidenheid stelsels, insluitend dié wat [ekstra] hoë sekuriteitsmaatreëls vereis. Dit het ook gebeur dat ek 'n tyd gelede dit interessant gevind het dev
, so, verby gegaan). Maar ek praat nie van ontwikkeling nie, ek praat van 'n veilige en doeltreffende omgewing vir toepassings.
Finansiële Tegnologie (Fintech) gaan langs inligtingsekuriteit (infosec) en die eerste sonder die tweede kan werk, maar nie vir lank nie. Daarom wil ek my ervaring en gereedskapstel wat ek gebruik, wat soos insluit, deel FintechEn infosec, en terselfdertyd, en kan ook in 'n wyer of heeltemal ander doel gebruik word. In hierdie artikel sal ek nie soseer oor bitcoin praat nie, maar oor die infrastruktuurmodel vir die ontwikkeling en bedryf van finansiële (en nie net nie) dienste - in 'n woord, daardie dienste waar "B" saak maak. Dit geld beide vir die bitcoin-uitruiling en vir die mees tipiese korporatiewe dieretuin van dienste van 'n klein maatskappy met geen verband met bitcoin nie.
Ek wil daarop let dat ek 'n ondersteuner van die beginsels is "Hou dit dom eenvoudig" и "minder is meer", dus sal beide die artikel en wat daarin beskryf word die eienskappe hê waaroor hierdie beginsels handel.
Denkbeeldige scenario: Kom ons kyk na alles deur die voorbeeld van 'n bitcoin-ruiler te gebruik. Ons het besluit om die uitruil van roebels, dollars, euro's vir bitcoins en omgekeerd te begin, en ons het reeds 'n werkende oplossing, maar vir ander digitale geld soos qiwi en webmoney, d.w.s. ons het alle regskwessies gesluit, ons het 'n klaargemaakte toepassing wat dien as 'n betaalpoort vir roebels, dollars en euro's en ander betaalstelsels. Dit is gekoppel aan ons bankrekeninge en het 'n soort API vir ons eindtoepassings. Ons het ook 'n webtoepassing wat dien as 'n wisselaar vir gebruikers, wel, soos 'n tipiese qiwi- of webmoney-kabinet - skep 'n rekening, voeg 'n kaart by, ensovoorts. Dit kommunikeer met ons gateway-toepassing, al is dit via die REST API in die plaaslike area. En so het ons besluit om bitcoins te koppel en terselfdertyd die infrastruktuur op te gradeer, want. Aanvanklik was alles in 'n haas op virtuele bokse in die kantoor onder die tafel ... die webwerf het begin gebruik word, en ons het begin bekommer oor uptyd en werkverrigting.
Dus, kom ons begin met die hoof een - die keuse van 'n bediener. Omdat die besigheid in ons voorbeeld is klein en ons vertrou die gasheerverskaffer (OVH) wat ons sal kies
Bediener installasie
Alles is eenvoudig hier. Ons kies die yster wat by ons behoeftes pas. Kies dan die FreeBSD-beeld. Wel, of ons koppel (in die geval van 'n ander gasheer en ons eie hardeware) via IPMI of met 'n monitor en voer die .iso FreeBSD-beeld in die selflaai. Vir orkesopstelling gebruik ek
Die stelsel is op 'n standaard manier geïnstalleer, ek sal nie hieroor stilstaan nie, ek sal net daarop let dat u aandag moet skenk aan voordat u begin werk. verharding opsies wat bied bsdinstaller
aan die einde van die installasie (as jy die stelsel self installeer):
Daar is
Dit is ook moontlik om die bogenoemde parameters op 'n reeds geïnstalleerde stelsel te aktiveer. Om dit te doen, moet jy die selflaaiprogram-lêer wysig en kernopsies aktiveer. *ee is die BSD-redakteur
# 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
Dit is ook die moeite werd om seker te maak dat jy die nuutste weergawe van die stelsel geïnstalleer het, en
Toe stel ons op aide
, die monitering van die status van stelselkonfigurasielêers. Jy kan meer uitvoerig lees
pkg install aide
en wysig ons 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
Skakel aan
sysrc auditd_enable=YES
# service auditd start
Hoe om hierdie besigheid te administreer word perfek beskryf in
Nou herlaai ons en gaan voort na die sagteware op die bediener. Elke bediener is 'n hypervisor vir houers of volledige virtuele masjiene. Daarom is dit belangrik dat die verwerker VT-x en EPT ondersteun as ons van plan is om volle virtualisasie te gebruik.
As 'n bestuur van houers en virtuele masjiene gebruik ek
Houers? Weer Docker of wat?
En hier is dit nie. cbsd
om hierdie houers, wie se naam selle is, te orkestreer.
'n Hok is 'n uiters doeltreffende oplossing vir die bou van infrastruktuur vir 'n verskeidenheid doeleindes, waar, as gevolg daarvan, volledige isolasie van individuele dienste of prosesse vereis word. Dit is in wese 'n kloon van die gasheerstelsel, maar vereis nie volledige hardeware-virtualisering nie. En danksy dit word hulpbronne nie aan die "gas-bedryfstelsel" bestee nie, maar slegs aan die werk wat gedoen word. Wanneer selle vir interne behoeftes gebruik word, is dit 'n baie gerieflike oplossing vir optimale gebruik van die hulpbron - 'n klomp selle op een ysterbediener kan elkeen individueel die hele bedienerhulpbron gebruik indien nodig. Met inagneming dat gewoonlik verskillende subdienste addisioneel benodig. hulpbronne op verskillende tye, kan jy maksimum werkverrigting van een bediener onttrek as jy selle tussen bedieners korrek beplan en debalanseer. Indien nodig, kan selle ook limiete stel op die hulpbron wat gebruik word.
Wat van volledige virtualisering?
Sover ek weet cbsd
werk ondersteun bhyve
en XEN-hipervisors. Ek het nog nooit die tweede een gebruik nie, maar die eerste een is relatief jonk bhyve
in die voorbeeld hieronder.
Installeer en konfigureer die gasheeromgewing
Ons gebruik FS
gpart add -t freebsd-zfs /dev/ada0
/dev/ada0p4 added!
voeg 'n skyfpartisie by die oorblywende spasie
geli init /dev/ada0p4
ons ry ons enkripsie wagwoord in
geli attach /dev/ada0p4
weer voer ons die wagwoord in en ons het 'n toestel /dev/ada0p4.eli - dit is ons geïnkripteer spasie. Dan herhaal ons dieselfde vir /dev/ada1 en die res van die skywe in die skikking. En ons skep 'n nuwe een
zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli
- wel, ons het 'n minimum gevegstel gereed. 'n Spieëlskikking skywe ingeval een van die drie misluk.
Ons skep 'n datastel op 'n nuwe "poel"
zfs create vms/jails
pkg install cbsd
- het die span geloods en die bestuur vir ons selle opgestel.
Na cbsd
geïnstalleer is, moet dit geïnisialiseer word:
# env workdir="/vms/jails" /usr/local/cbsd/sudoexec/initenv
wel, ons beantwoord 'n klomp vrae, meestal met verstekantwoorde.
*As jy enkripsie gebruik, is dit belangrik dat die daemon cbsdd
het nie outomaties begin totdat jy die skywe handmatig of outomaties dekripteer nie (in ons voorbeeld word dit deur zabbix gedoen)
**Ek gebruik ook nie NAT vanaf cbsd
, maar ek konfigureer dit self in 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
Die opstel van firewall-beleide is ook 'n aparte onderwerp, so ek sal nie delf in die opstel van die BLOCK ALL-beleid en die opstel van witlyste nie, dit kan gedoen word deur te lees
Goed ... ons het cbsd geïnstalleer, tyd om ons eerste werkesel te bou, die ingehokte bitcoin daemon!
cbsd jconstruct-tui
Hier sien ons die selskepping-dialoog. Nadat al die waardes gestel is, skep ons!
Wanneer jy die eerste sel skep, moet jy kies wat om as basis vir die selle te gebruik. Ek kies 'n verspreiding uit die FreeBSD-bewaarplek met die opdrag repo
. Hierdie keuse word slegs gemaak wanneer die eerste hok van 'n spesifieke weergawe geskep word (jy kan hokke aanbied van enige weergawe wat ouer as die gasheerweergawe is).
Nadat alles geïnstalleer is, begin ons die hok!
# cbsd jstart bitcoind
Maar ons moet sagteware in die hok installeer.
# jls
JID IP Address Hostname Path
1 192.168.0.1 bitcoind.space.com /zroot/jails/jails/bitcoind
jexec bitcoind
om in die selkonsole te kom
en reeds binne die hok installeer ons die sagteware met sy afhanklikhede (ons gasheerstelsel bly skoon)
bitcoind:/@[15:25] # pkg install bitcoin-daemon bitcoin-utils
bitcoind:/@[15:30] # sysrc bitcoind_enable=YES
bitcoind:/@[15:30] # service bitcoind start
Daar is Bitcoin in die hok, maar ons het anonimiteit nodig, want ons wil via die TOR-netwerk aan sommige hokke koppel. Oor die algemeen beplan ons om die meeste van die selle met verdagte sagteware slegs deur 'n instaanbediener te draai. Te danke aan pf
jy kan NAT deaktiveer na 'n spesifieke reeks IP-adresse in die plaaslike netwerk, en NAT slegs vir ons TOR-nodus toelaat. Dus, selfs as wanware die sel binnedring, sal dit heel waarskynlik nie die buitewêreld kontak nie, en indien wel, sal dit nie die IP van ons bediener openbaar nie. daarom skep ons 'n ander sel om dienste te "aanstuur" as 'n ".onion"-diens en as 'n proxy vir internettoegang na individuele selle.
# 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
Ons gaan luister op die plaaslike adres (beskikbaar vir alle selle)
SOCKSPort 192.168.0.2:9050
Wat anders kort ons vir volkome geluk. Ja, ons benodig 'n diens vir ons web, miskien meer as een. Kom ons begin nginx, wat as 'n omgekeerde proxy sal optree en sorg vir die hernuwing van Let's Encrypt-sertifikate
# cbsd jsconstruct-tui
# cbsd jstart nginx-rev
# jexec nginx-rev
nginx-rev:/@[15:47] # pkg install nginx py36-certbot
En hier sit ons 150 MB afhanklikhede in 'n hok. En die gasheer is nog skoon.
Kom ons keer later terug na die opstel van nginx, ons moet nog twee selle insamel vir ons betalingspoort op nodejs en roes en 'n webtoepassing, wat om een of ander rede op Apache en PHP is, en laasgenoemde benodig ook 'n MySQL-databasis.
# 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
... en nog 380 MB pakkette geïsoleer
dan laai ons ons toepassing af met git en hardloop dit.
# cbsd jsconstruct-tui
# cbsd jstart webapp
# jexec webapp
webapp:/@[16:02] # pkg install mariadb104-server apache24 php74 mod_php74 php74-pdo_mysql
450 MB pakkette. in 'n hok.
hier gee ons die ontwikkelaar toegang via SSH direk in die hok, hulle sal alles self daar doen:
webapp:/@[16:02] # ee /etc/ssh/sshd_config
Port 2267
- verander die SSH-poort van die sel na enige arbitrêre
webapp:/@[16:02] # sysrc sshd_enable=YES
webapp:/@[16:02] # service sshd start
Wel, die diens loop, dit bly om die reël by te voeg pf
firewall
Kom ons kyk watter IP's ons vir selle het en hoe ons "lokaal" in die algemeen lyk
# 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
en voeg 'n reël by
# 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, aangesien ons hier is, sal ons ook 'n reël oor omgekeerde proxy byvoeg:
## 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, nou 'n bietjie oor bitcoins.
Wat ons het, is dat ons 'n webtoepassing het wat van buite toeganklik is, en dit kommunikeer plaaslik met ons betaalpoort. Nou moet ons 'n werksomgewing voorberei vir interaksie met die bitcoin-netwerk self - node bitcoind
dit is net 'n daemoon wat 'n plaaslike kopie van die blokketting op datum hou. Hierdie daemon het RPC- en beursie-funksionaliteit, maar daar is geriefliker "wrappers" vir toepassingsontwikkeling. Om mee te begin, het ons besluit om te sit electrum
is 'n CLI-beursie.
skootrekenaars. Vir eers sal ons electrum met publieke bedieners gebruik, en later in 'n ander sel sal ons verhoog
# cbsd jsconstruct-tui
# cbsd jstart electrum
# jexec electrum
electrum:/@[8:45] # pkg install py36-electrum
nog 700 MB sagteware in ons hok
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"
}
Nou het ons 'n beursie geskep.
wallet@electrum:/ % electrum-3.6 listaddresses
[
"18WEhbjvMLGRMfwudzUrUd25U5C7uZYkzE",
"14XHSejhxsZNDRtk4eFbqAX3L8rftzwQQU",
"1KQXaN8RXiCN1ne9iYngUWAr6KJ6d4pPas",
...
"1KeVcAwEYhk29qEyAfPwcBgF5mMMoy4qjw",
"18VaUuSeBr6T2GwpSHYF3XyNgLyLCt1SWk"
]
wallet@electrum:/ % electrum-3.6 help
Aan ons on-ketting Van nou af sal slegs 'n beperkte kring mense aan die beursie kan koppel. Om nie toegang van buite na hierdie sel oop te maak nie, sal SSH-verbindings deur TOR (so 'n gedesentraliseerde weergawe van VPN) plaasvind. Ons begin SSH in die hok, maar raak nie ons pf.conf op die gasheer nie.
electrum:/@[9:00] # sysrc sshd_enable=YES
electrum:/@[9:00] # service sshd start
Laat ons nou die internetverbinding in die hok met die beursie afskakel. Kom ons gee dit 'n IP-adres van 'n ander subnetruimte wat nie NATized is nie. Kom ons verander eers /etc/pf.conf
op die gasheer
# ee /etc/pf.conf
JAIL_IP_POOL="192.168.0.0/24"
verander na JAIL_IP_POOL="192.168.0.0/25"
, dus sal alle adresse 192.168.0.126-255 nie direkte toegang tot die internet hê nie. 'n Soort sagteware "air-gap" netwerk. En die NAT-reël bly soos dit was
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
Oorlaai van die reëls
# pfctl -f /etc/pf.conf
Nou vat ons ons hok aan
# 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, maar nou sal die stelsel self ophou werk vir ons. Ons kan egter 'n stelselinstaanbediener spesifiseer. Maar daar is een ding, op TOR is dit 'n SOCKS5-instaanbediener, en vir gerief sou ons ook 'n HTTP-instaanbediener hê.
# 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, nou het ons twee instaanbedieners in ons stelsel, en albei voer via TOR uit: socks5: //192.168.0.2:9050 en
Nou kan ons ons beursie-omgewing opstel
# 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, nou sal die dop onder die proxy werk. As ons pakkette wil installeer, moet ons byvoeg /usr/local/etc/pkg.conf
van onder die wortel van die sel af
pkg_env: {
http_proxy: "http://my_proxy_ip:8123",
}
Wel, nou is dit tyd om die TOR-verborge diens as die adres van ons SSH-diens in die beursiehok by te voeg.
# 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
Hier is ons verbindingsadres. Kom ons kyk vanaf die plaaslike masjien. Maar eers moet ons ons SSH-sleutel byvoeg:
wallet@electrum:/ % mkdir ~/.ssh
wallet@electrum:/ % ee ~/.ssh/authorized_keys
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAG9Fk2Lqi4GQ8EXZrsH3EgSrVIQPQaAlS38MmJLBabihv9KHIDGXH7r018hxqLNNGbaJWO/wrWk7sG4T0yLHAbdQAFsMYof9kjoyuG56z0XZ8qaD/X/AjrhLMsIoBbUNj0AzxjKNlPJL4NbHsFwbmxGulKS0PdAD5oLcTQi/VnNdU7iFw== user@local
Wel, vanaf 'n Linux-kliëntmasjien
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
Verbind (Om dit te laat werk, benodig jy 'n plaaslike TOR-demoon wat op 9050 luister)
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
Sukses!
Om met kits- en mikrobetalings te werk, het ons ook 'n nodus nodig c-lightning
nodig om te funksioneer bitcoind
maar ja.
*daar is verskillende implementerings op verskillende PL's van die Lightning Network-protokol. Van die wat ons getoets het, was c-bliksem (geskryf in C) die mees stabiele en hulpbrondoeltreffendste.
# 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
Terwyl u alles saamstel en installeer wat u nodig het, laat ons 'n RPC-gebruiker skep 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
My chaotiese omskakeling tussen selle blyk tog nie so chaoties te wees as ek die nut nagaan nie tmux
, wat jou toelaat om baie subsessies van terminale binne een sessie te skep. Analoog: screen
Ok, ons wil nie die regte IP van ons nodus openbaar nie, en ons wil alle finansiële transaksies deur die TOR uitvoer. Daarom is nog een .ui nodig.
# 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
kom ons skep nou 'n konfigurasie vir 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 ~
jy moet ook 'n konfigurasielêer vir bitcoin-cli skep, 'n hulpprogram waarmee kommunikeer bitcoind
lightning@lightning:~ % mkdir .bitcoin
lightning@lightning:~ % ee .bitcoin/bitcoin.conf
rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=test
tjek
lightning@lightning:~ % bitcoin-cli echo "test"
[
"test"
]
bekendstelling lightningd
lightning@lightning:~ % lightningd --daemon
Homself lightningd
nut kan beheer word lightning-cli
, byvoorbeeld:
lightning-cli newaddr
kry adres vir nuwe inkomende betaling
{
"address": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv",
"bech32": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv"
}
lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all
stuur al die geld van die beursie (van alle on-ketting adresse) na die adres
Ook opdragte vir buite-ketting bedrywighede lightning-cli invoice
, lightning-cli listinvoices
, lightning-cli pay
en so aan
Wel, vir kommunikasie met die toepassing, het ons 'n REST Api
curl -k https://192.168.0.7:9737/rpc -d '{"method": "pay", "params": ["lnbc..."]}' -H 'X-Access masterkey'
Som op
# 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
Ons het 'n stel houers, elk met sy eie vlak van toegang vanaf en na die plaaslike netwerk.
# 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
Soos jy kan sien, neem bitcoind al 190 GB spasie op. Maar wat as ons nog 'n nodus nodig het vir toetse? Dit is waar ZFS handig te pas kom. Met hulp cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com
jy kan 'n kiekie skep en 'n nuwe sel aan hierdie kiekie koppel. Die nuwe sel sal heeltemal sy eie spasie hê, maar slegs die verskil tussen die huidige toestand en die oorspronklike sal in die FS in ag geneem word (spaar ten minste 190 GB)
Elke sel is sy eie aparte ZFS-datastel, en dit is uiters gerieflik.
Dit is ook die moeite werd om te let op die behoefte aan afstandmonitering van die gasheer, wat ons vir hierdie doeleindes het
B - sekuriteit
Wat sekuriteit betref, kom ons begin by die sleutelbeginsels in die konteks van infrastruktuur:
Vertroulikheid - Standaardgereedskap van UNIX-agtige stelsels dwing hierdie beginsel af. Ons skei logies toegang tot elke logies aparte element van die stelsel - 'n sel. Toegang word verskaf deur standaard gebruikersverifikasie deur die gebruikers se private sleutels te gebruik. Alle kommunikasie tussen en na eindselle is geïnkripteer. Danksy skyfkodering kan ons nie bekommerd wees oor die veiligheid van data tydens skyfvervanging of migrasie na 'n ander bediener nie. Die enigste kritieke toegang is toegang tot die gasheerstelsel, aangesien sulke toegang oor die algemeen toegang bied tot data binne houers.
Integriteit — Die implementering van hierdie beginsel vind op verskeie verskillende vlakke plaas. Eerstens is dit belangrik om daarop te let dat in die geval van bedienerhardeware, ECC-geheue, ZFS sorg vir data-integriteit op die vlak van inligtingstukkies uit die boks. Onmiddellike foto's laat jou toe om enige tyd te rugsteun. Gerieflike seluitvoer-/invoergereedskap maak selreplikasie maklik.
beskikbaarheid - Dit is opsioneel. Hang af van die graad van jou roem en die feit dat jy haters het. In ons voorbeeld het ons verseker dat die beursie uitsluitlik vanaf die TOR-netwerk toeganklik was. Indien nodig, kan u alles op die firewall blokkeer en toegang tot die bediener uitsluitlik deur tonnels toelaat (TOR of VPN is 'n ander saak). Die bediener sal dus soveel as moontlik van die buitewêreld afgesny wees, en net ons self kan die beskikbaarheid daarvan beïnvloed.
Onmoontlikheid van weiering - En dit hang af van verdere werking en voldoening aan die korrekte beleide vir gebruikersregte, toegang, ens. Maar met die regte benadering word alle gebruikersaksies geoudit, en danksy kriptografiese oplossings is dit moontlik om uniek te identifiseer wie en wanneer sekere aksies uitgevoer word.
Natuurlik is die beskryfde konfigurasie nie 'n absolute voorbeeld van hoe dit altyd moet wees nie, maar eerder een van die voorbeelde van hoe dit kan wees, terwyl dit baie buigsame skaal- en aanpassingsopsies behou.
Maar wat van volle virtualisering?
Oor volledige virtualisering met behulp van cbsd, kan jy bhyve
sommige kernopsies moet geaktiveer word.
# cat /etc/rc.conf
...
kld_list="vmm if_tap if_bridge nmdm"
...
# cat /boot/loader.conf
...
vmm_load="YES"
...
So as daar skielik 'n behoefte is om 'n docker te begin, dan verhoog ons 'n paar debian en gaan voort!
Dis al
Miskien is dit al wat ek wou deel. As jy van die artikel gehou het, kan jy vir my bitcoins gooi -
Bron: will.com