Ilifanyika kwamba kwa taaluma mimi ni msimamizi wa mifumo ya kompyuta na mitandao (kwa kifupi: msimamizi wa mfumo), na nilipata fursa ya kumwambia prof. kwa zaidi ya miaka 10 kidogo. shughuli za aina mbalimbali za mifumo, ikiwa ni pamoja na ile inayohitaji hatua [uliokithiri] za usalama. Pia ilitokea kwamba wakati fulani uliopita niliona kuwa ya kuvutia dev
, kwa hiyo, nilikuwa nikipita). Lakini sizungumzii maendeleo, nazungumza juu ya mazingira salama na bora kwa programu.
Teknolojia ya fedha (fintech) nenda karibu na usalama wa habari (infosec) na wa kwanza anaweza kufanya kazi bila ya pili, lakini si kwa muda mrefu. Ndio maana ninataka kushiriki uzoefu wangu na seti ya zana ninazotumia, ambazo ni pamoja na zote mbili fintechNa infosec, na wakati huo huo, na pia inaweza kutumika kwa madhumuni pana au tofauti kabisa. Katika nakala hii sitakuambia sana juu ya Bitcoin, lakini juu ya muundo wa miundombinu kwa maendeleo na uendeshaji wa huduma za kifedha (na sio tu) - kwa neno moja, huduma hizo ambapo "B" ni muhimu. Hii inatumika kwa ubadilishaji wa Bitcoin na kwa mbuga ya wanyama ya kawaida zaidi ya huduma za kampuni ndogo isiyounganishwa na Bitcoin kwa njia yoyote.
Ningependa kutambua kwamba mimi ni mfuasi wa kanuni "weka ujinga rahisi" ΠΈ "chini ni zaidi", kwa hiyo, makala yote na kile kilichoelezwa ndani yake kitakuwa na mali ambazo kanuni hizi zinahusu.
Hali ya kufikirika: Hebu tuangalie kila kitu kwa kutumia mfano wa exchanger bitcoin. Tuliamua kuzindua ubadilishaji wa rubles, dola, euro kwa bitcoins na nyuma, na tayari tuna suluhisho la kufanya kazi, lakini kwa pesa zingine za dijiti kama qiwi na webmoney, i.e. Tumefunga maswala yote ya kisheria, tunayo programu iliyotengenezwa tayari ambayo hutumika kama lango la malipo kwa rubles, dola na euro na mifumo mingine ya malipo. Imeunganishwa kwenye akaunti zetu za benki na ina aina fulani ya API kwa ajili ya programu zetu za mwisho. Pia tuna programu ya wavuti ambayo hufanya kama kibadilishaji cha watumiaji, vizuri, kama akaunti ya kawaida ya qiwi au webmoney - fungua akaunti, ongeza kadi, na kadhalika. Inawasiliana na maombi yetu ya lango, ingawa kupitia API ya REST katika eneo la karibu. Na kwa hiyo tuliamua kuunganisha bitcoins na wakati huo huo kuboresha miundombinu, kwa sababu ... Hapo awali, kila kitu kiliwekwa haraka kwenye sanduku za kawaida kwenye ofisi chini ya meza ... tovuti ilianza kutumiwa, na tukaanza kuwa na wasiwasi juu ya wakati na utendaji.
Kwa hiyo, hebu tuanze na jambo kuu - kuchagua seva. Kwa sababu biashara katika mfano wetu ni ndogo na tunaamini mwenyeji (OVH) tutachagua
Ufungaji wa seva
Kila kitu ni rahisi hapa. Tunachagua vifaa vinavyofaa mahitaji yetu. Kisha chagua picha ya FreeBSD. Naam, au tunaunganisha (katika kesi ya mpangishaji mwingine na maunzi yetu wenyewe) kupitia IPMI au kwa kufuatilia na kulisha picha ya .iso FreeBSD kwenye upakuaji. Kwa usanidi wa orchestra ninayotumia
Ufungaji wa mfumo hutokea kwa njia ya kawaida, sitakaa juu ya hili, nitakumbuka tu kwamba kabla ya kuanza operesheni ni muhimu kuzingatia. ugumu chaguzi ambayo inatoa bsdinstaller
mwisho wa usakinishaji (ikiwa utasanikisha mfumo mwenyewe):
Kuna
Pia inawezekana kuwezesha vigezo vilivyotajwa hapo juu kwenye mfumo uliowekwa tayari. Ili kufanya hivyo, unahitaji kuhariri faili ya bootloader na uwezesha vigezo vya kernel. *ee ni mhariri kama huyu katika 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
Unapaswa pia kuhakikisha kuwa una toleo la hivi karibuni la mfumo uliosakinishwa, na
Kisha tunasanidi aide
, kufuatilia hali ya faili za usanidi wa mfumo. Unaweza kusoma zaidi kwa undani
pkg install aide
na uhariri crontab yetu
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
Sisi ni pamoja na
sysrc auditd_enable=YES
# service auditd start
Jinsi ya kusimamia suala hili imeelezewa kikamilifu katika
Sasa tunaanzisha upya na kuendelea na programu kwenye seva. Kila seva ni hypervisor kwa vyombo au mashine kamili ya mtandaoni. Kwa hiyo, ni muhimu kwamba processor inasaidia VT-x na EPT ikiwa tunapanga kutumia virtualization kamili.
Ili kudhibiti vyombo na mashine pepe ninazotumia
Vyombo? Docker tena au nini?
Lakini hapana. cbsd
kupanga vyombo hivi, vinavyoitwa seli.
Ngome ni suluhisho la ufanisi sana kwa ajili ya kujenga miundombinu kwa madhumuni mbalimbali, ambapo kutengwa kamili kwa huduma za mtu binafsi au michakato hatimaye inahitajika. Kimsingi, ni mshirika wa mfumo wa mwenyeji, lakini hauhitaji uboreshaji kamili wa vifaa. Na shukrani kwa hili, rasilimali hazitumiwi kwenye "OS ya wageni", lakini tu kwenye kazi inayofanywa. Wakati seli zinatumiwa kwa mahitaji ya ndani, hii ni suluhisho rahisi sana kwa matumizi bora ya rasilimali - rundo la seli kwenye seva moja ya maunzi kila moja inaweza kutumia rasilimali nzima ya seva ikiwa ni lazima. Kwa kuzingatia kwamba kawaida huduma tofauti zinahitaji ziada. rasilimali kwa nyakati tofauti, unaweza kutoa utendaji wa juu zaidi kutoka kwa seva moja ikiwa utapanga vizuri na kusawazisha seli kati ya seva. Ikiwa ni lazima, seli zinaweza pia kupewa vikwazo kwenye rasilimali inayotumiwa.
Vipi kuhusu uboreshaji kamili?
Kwa kadiri ninavyojua cbsd
inasaidia kazi bhyve
na hypervisors za XEN. Sijawahi kutumia ya pili, lakini ya kwanza ni mpya bhyve
katika mfano hapa chini.
Kusakinisha na Kusanidi Mazingira ya Mwenyeji
Tunatumia FS
gpart add -t freebsd-zfs /dev/ada0
/dev/ada0p4 added!
ongeza kizigeu cha diski kwenye nafasi iliyobaki
geli init /dev/ada0p4
ingiza nenosiri letu la usimbaji fiche
geli attach /dev/ada0p4
Tunaingiza nenosiri tena na tuna kifaa /dev/ada0p4.eli - hii ndiyo nafasi yetu iliyosimbwa. Kisha tunarudia sawa kwa /dev/ada1 na diski zingine kwenye safu. Na tunaunda mpya
zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli
- Kweli, tuna vifaa vya chini vya kupambana tayari. Safu iliyoakisiwa ya diski ikiwa moja ya hizo tatu itashindwa.
Kuunda seti ya data kwenye "dimbwi" mpya
zfs create vms/jails
pkg install cbsd
- tulizindua timu na kuweka usimamizi wa seli zetu.
Baada cbsd
imewekwa, inahitaji kuanzishwa:
# env workdir="/vms/jails" /usr/local/cbsd/sudoexec/initenv
Kweli, tunajibu rundo la maswali, mara nyingi kwa majibu chaguo-msingi.
*Ikiwa unatumia usimbaji fiche, ni muhimu kwamba daemon cbsdd
haikuanza kiotomatiki hadi ubadilishe diski kwa mikono au kiatomati (kwa mfano wetu hii inafanywa na zabbix)
**Pia situmii NAT kutoka cbsd
, na ninaisanidi mwenyewe 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
Kuweka sera za ngome pia ni mada tofauti, kwa hivyo sitaingia kwa kina katika kusanidi sera ya BLOCK ALL na kuweka orodha zilizoidhinishwa, unaweza kufanya hivyo kwa kusoma.
Kweli... tumesakinisha cbsd, ni wakati wa kuunda farasi wetu wa kwanza - pepo wa Bitcoin aliyefungiwa!
cbsd jconstruct-tui
Hapa tunaona kidirisha cha kuunda seli. Baada ya maadili yote kuwekwa, wacha tuunde!
Wakati wa kuunda seli yako ya kwanza, unapaswa kuchagua kile cha kutumia kama msingi wa seli. Ninachagua usambazaji kutoka kwa hazina ya FreeBSD na amri repo
. Chaguo hili hufanywa tu wakati wa kuunda kisanduku cha kwanza cha toleo mahususi (unaweza kupangisha visanduku vya toleo lolote ambalo ni la zamani kuliko toleo la seva pangishi).
Baada ya kila kitu kimewekwa, tunazindua ngome!
# cbsd jstart bitcoind
Lakini tunahitaji kufunga programu katika ngome.
# jls
JID IP Address Hostname Path
1 192.168.0.1 bitcoind.space.com /zroot/jails/jails/bitcoind
jexec bitcoind
kuingia kwenye koni ya seli
na tayari ndani ya seli tunasakinisha programu na utegemezi wake (mfumo wetu wa mwenyeji unabaki safi)
bitcoind:/@[15:25] # pkg install bitcoin-daemon bitcoin-utils
bitcoind:/@[15:30] # sysrc bitcoind_enable=YES
bitcoind:/@[15:30] # service bitcoind start
Kuna Bitcoin kwenye ngome, lakini tunahitaji kutokujulikana kwa sababu tunataka kuunganishwa na baadhi ya ngome kupitia mtandao wa TOP. Kwa ujumla, tunapanga kuendesha visanduku vingi vilivyo na programu inayotiliwa shaka kupitia seva mbadala pekee. Shukrani kwa pf
Unaweza kulemaza NAT kwa anuwai fulani ya anwani za IP kwenye mtandao wa ndani, na kuruhusu NAT kwa nodi yetu ya TOR pekee. Kwa hivyo, hata programu hasidi ikiingia kwenye seli, kuna uwezekano mkubwa kwamba haitawasiliana na ulimwengu wa nje, na ikiwa itafanya hivyo, haitafichua IP ya seva yetu. Kwa hivyo, tunaunda kisanduku kingine cha "kusambaza" huduma kama huduma ya ".vitunguu" na kama seva mbadala ya kufikia Mtandao kwa seli mahususi.
# 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
Weka kusikiliza kwenye anwani ya karibu (inapatikana kwa visanduku vyote)
SOCKSPort 192.168.0.2:9050
Ni nini kingine tunachohitaji kwa furaha kamili? Ndiyo, tunahitaji huduma kwa wavuti yetu, labda zaidi ya moja. Wacha tuzindue nginx, ambayo itafanya kama wakala wa nyuma na kutunza upya vyeti vya Let's Encrypt
# cbsd jsconstruct-tui
# cbsd jstart nginx-rev
# jexec nginx-rev
nginx-rev:/@[15:47] # pkg install nginx py36-certbot
Na kwa hivyo tuliweka MB 150 za utegemezi kwenye ngome. Na mwenyeji bado ni safi.
Wacha turudi kusanidi nginx baadaye, tunahitaji kuongeza seli mbili zaidi kwa lango letu la malipo kwenye nodejs na kutu na programu ya wavuti, ambayo kwa sababu fulani iko katika Apache na PHP, na ya mwisho pia inahitaji hifadhidata ya MySQL.
# 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
...na MB nyingine 380 za vifurushi zimetengwa
Ifuatayo, tunapakua programu yetu na git na kuizindua.
# cbsd jsconstruct-tui
# cbsd jstart webapp
# jexec webapp
webapp:/@[16:02] # pkg install mariadb104-server apache24 php74 mod_php74 php74-pdo_mysql
Vifurushi vya 450 MB. katika ngome.
hapa tunampa msanidi ufikiaji kupitia SSH moja kwa moja kwa seli, watafanya kila kitu pale wenyewe:
webapp:/@[16:02] # ee /etc/ssh/sshd_config
Port 2267
- badilisha lango la SSH la kisanduku kuwa la kiholela
webapp:/@[16:02] # sysrc sshd_enable=YES
webapp:/@[16:02] # service sshd start
Kweli, huduma inaendelea, kilichobaki ni kuongeza sheria pf
firewall
Hebu tuone IP seli zetu zina nini na "eneo letu la karibu" kwa ujumla linaonekanaje.
# 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
na kuongeza kanuni
# 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
Kweli, kwa kuwa tuko hapa, wacha pia tuongeze sheria ya wakala wa kurudi nyuma:
## 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
Naam, sasa kidogo kuhusu bitcoins
Tulicho nacho ni kwamba tuna programu ya wavuti ambayo inafichuliwa nje na inazungumza ndani ya nchi kwenye lango letu la malipo. Sasa tunahitaji kuandaa mazingira ya kufanya kazi kwa kuingiliana na mtandao wa Bitcoin yenyewe - node bitcoind
ni daemon ambayo husasisha nakala ya ndani ya blockchain. Daemon hii ina RPC na utendakazi wa pochi, lakini kuna "vifuniko" vinavyofaa zaidi kwa ukuzaji wa programu. Kuanza na, tuliamua kuweka electrum
ni mkoba wa CLI.
kompyuta za mkononi. Kwa sasa tutatumia Electrum na seva za umma, na baadaye tutaiinua kwenye seli nyingine
# cbsd jsconstruct-tui
# cbsd jstart electrum
# jexec electrum
electrum:/@[8:45] # pkg install py36-electrum
MB 700 nyingine ya programu kwenye ngome yetu
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"
}
Sasa tuna mkoba ulioundwa.
wallet@electrum:/ % electrum-3.6 listaddresses
[
"18WEhbjvMLGRMfwudzUrUd25U5C7uZYkzE",
"14XHSejhxsZNDRtk4eFbqAX3L8rftzwQQU",
"1KQXaN8RXiCN1ne9iYngUWAr6KJ6d4pPas",
...
"1KeVcAwEYhk29qEyAfPwcBgF5mMMoy4qjw",
"18VaUuSeBr6T2GwpSHYF3XyNgLyLCt1SWk"
]
wallet@electrum:/ % electrum-3.6 help
Kwetu kwenye mnyororo Ni idadi ndogo tu ya watu wataweza kuunganisha kwenye pochi kuanzia sasa na kuendelea. Ili usifungue ufikiaji wa kisanduku hiki kutoka nje, miunganisho kupitia SSH itafanyika kupitia TOP (toleo la VPN lililogatuliwa). Tunazindua SSH kwenye kisanduku, lakini usiguse pf.conf yetu kwenye seva pangishi.
electrum:/@[9:00] # sysrc sshd_enable=YES
electrum:/@[9:00] # service sshd start
Sasa hebu tuzima kiini na upatikanaji wa mtandao wa mkoba. Wacha tuipe anwani ya IP kutoka kwa nafasi nyingine ndogo ambayo sio NATed. Kwanza tubadilike /etc/pf.conf
juu ya mwenyeji
# ee /etc/pf.conf
JAIL_IP_POOL="192.168.0.0/24"
tuibadilishe JAIL_IP_POOL="192.168.0.0/25"
, hivyo anwani zote 192.168.0.126-255 hazitakuwa na upatikanaji wa moja kwa moja kwenye mtandao. Aina ya mtandao wa "hewa-pengo" ya programu. Na sheria ya NAT inabaki kama ilivyokuwa
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
Kupakia sheria kupita kiasi
# pfctl -f /etc/pf.conf
Sasa hebu tuchukue kiini chetu
# 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, lakini sasa mfumo wenyewe utaacha kufanya kazi kwa ajili yetu. Hata hivyo, tunaweza kubainisha proksi ya mfumo. Lakini kuna jambo moja, kwenye TOR ni proksi ya SOCKS5, na kwa urahisi tungependa pia proksi ya HTTP.
# 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
Kweli, sasa kuna seva mbili za wakala kwenye mfumo wetu, na zote mbili hutoa kupitia TOR: soksi5://192.168.0.2:9050 na
Sasa tunaweza kusanidi mazingira ya mkoba wetu
# 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
Kweli, sasa ganda litafanya kazi kutoka chini ya wakala. Ikiwa tunataka kufunga vifurushi, basi tunapaswa kuongeza /usr/local/etc/pkg.conf
kutoka chini ya mzizi wa ngome
pkg_env: {
http_proxy: "http://my_proxy_ip:8123",
}
Kweli, sasa ni wakati wa kuongeza huduma iliyofichwa ya TOR kama anwani ya huduma yetu ya SSH kwenye ngome ya mkoba.
# 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
Hii ndio anwani yetu ya muunganisho. Wacha tuangalie kutoka kwa mashine ya ndani. Lakini kwanza tunahitaji kuongeza ufunguo wetu wa SSH:
wallet@electrum:/ % mkdir ~/.ssh
wallet@electrum:/ % ee ~/.ssh/authorized_keys
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAG9Fk2Lqi4GQ8EXZrsH3EgSrVIQPQaAlS38MmJLBabihv9KHIDGXH7r018hxqLNNGbaJWO/wrWk7sG4T0yLHAbdQAFsMYof9kjoyuG56z0XZ8qaD/X/AjrhLMsIoBbUNj0AzxjKNlPJL4NbHsFwbmxGulKS0PdAD5oLcTQi/VnNdU7iFw== user@local
Kweli, kutoka kwa mashine ya mteja ya Linux
user@local ~$ nano ~/.ssh/config
#remote electrum wallet
Host remotebtc
User wallet
Port 22
Hostname mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion
ProxyCommand /bin/ncat --proxy localhost:9050 --proxy-type socks5 %h %p
Hebu tuunganishe (Ili hii ifanye kazi, unahitaji daemon ya karibu ya TOR ambayo inasikiza kwenye 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
Mafanikio!
Ili kufanya kazi na malipo ya papo hapo na ndogo, tunahitaji nodi c-lightning
inahitajika kwa utendaji kazi bitcoind
lakini ndiyo.
*Kuna utekelezaji tofauti wa itifaki ya Mtandao wa Umeme katika lugha tofauti. Kati ya zile tulizozijaribu, umeme wa c (ulioandikwa katika C) ulionekana kuwa thabiti zaidi na ufaafu wa rasilimali.
# 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
Wakati kila kitu muhimu kinakusanywa na kusakinishwa, wacha tuunde mtumiaji wa RPC 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
Ubadilishaji wangu wa machafuko kati ya seli unageuka kuwa sio wa fujo sana ikiwa utagundua matumizi tmux
, ambayo hukuruhusu kuunda vikao vidogo vingi vya wastaafu ndani ya kipindi kimoja. Analogi: screen
Kwa hivyo, hatutaki kufichua IP halisi ya nodi yetu, na tunataka kufanya miamala yote ya kifedha kupitia TOP. Kwa hiyo, kitunguu kingine cha .haihitajiki.
# 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
Sasa hebu tuunde usanidi wa c-umeme
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 ~
unahitaji pia kuunda faili ya usanidi kwa bitcoin-cli, shirika linalowasiliana nalo bitcoind
lightning@lightning:~ % mkdir .bitcoin
lightning@lightning:~ % ee .bitcoin/bitcoin.conf
rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=test
kuangalia
lightning@lightning:~ % bitcoin-cli echo "test"
[
"test"
]
uzinduzi lightningd
lightning@lightning:~ % lightningd --daemon
Mwenyewe lightningd
unaweza kudhibiti matumizi lightning-cli
, kwa mfano:
lightning-cli newaddr
pata anwani ya malipo mapya yanayoingia
{
"address": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv",
"bech32": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv"
}
lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all
tuma pesa zote kwenye pochi kwa anwani (anwani zote za mnyororo)
Pia amri kwa shughuli za nje ya mnyororo lightning-cli invoice
, lightning-cli listinvoices
, lightning-cli pay
na kadhalika.
Kweli, kwa mawasiliano na programu tunayo REST Api
curl -k https://192.168.0.7:9737/rpc -d '{"method": "pay", "params": ["lnbc..."]}' -H 'X-Access masterkey'
Jumla juu
# 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
Tuna seti ya vyombo, kila moja ikiwa na kiwango chake cha ufikiaji kutoka na kwa mtandao wa ndani.
# 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
Kama unavyoona, bitcoind inachukua nafasi ya GB 190. Je, ikiwa tunahitaji nodi nyingine kwa ajili ya vipimo? Hapa ndipo ZFS inakuja vizuri. Kwa msaada cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com
unaweza kuunda muhtasari na kuambatisha kisanduku kipya kwenye muhtasari huu. Kiini kipya kitakuwa na nafasi yake mwenyewe, lakini tu tofauti kati ya hali ya sasa na ya awali itazingatiwa katika mfumo wa faili (tutahifadhi angalau 190 GB)
Kila seli ni hifadhidata yake tofauti ya ZFS, na hii ni rahisi sana.
Inafaa pia kuzingatia hitaji la ufuatiliaji wa mbali wa mwenyeji, kwa madhumuni haya tuliyo nayo
B - usalama
Kuhusu usalama, hebu tuanze kutoka kwa kanuni muhimu katika muktadha wa miundombinu:
Usiri - Zana za kawaida za mifumo inayofanana na UNIX huhakikisha utekelezaji wa kanuni hii. Tunatenganisha ufikiaji wa kila kipengele cha kimantiki cha mfumo - seli. Ufikiaji hutolewa kupitia uthibitishaji wa kawaida wa mtumiaji kwa kutumia funguo za kibinafsi za watumiaji. Mawasiliano yote kati na hadi mwisho seli hutokea katika fomu iliyosimbwa. Shukrani kwa usimbaji fiche wa diski, hatuna haja ya kuwa na wasiwasi kuhusu usalama wa data wakati wa kubadilisha diski au kuhamia seva nyingine. Ufikiaji muhimu pekee ni ufikiaji wa mfumo wa seva pangishi, kwa kuwa ufikiaji kama huo kwa ujumla hutoa ufikiaji wa data ndani ya vyombo.
Uadilifu βUtekelezaji wa kanuni hii hutokea katika ngazi mbalimbali. Kwanza, ni muhimu kutambua kwamba katika kesi ya vifaa vya seva, kumbukumbu ya ECC, ZFS tayari "nje ya sanduku" inachukua huduma ya uadilifu wa data katika ngazi ya bits ya habari. Vijipicha vya papo hapo hukuruhusu kufanya nakala rudufu wakati wowote kwa kuruka. Zana zinazofaa za usafirishaji wa seli/kuagiza hurahisisha uigaji wa seli.
Upatikanaji - Hii tayari ni ya hiari. Inategemea kiwango cha umaarufu wako na ukweli kwamba una wapinzani. Katika mfano wetu, tulihakikisha kuwa pochi ilifikiwa pekee kutoka kwa mtandao wa TOP. Ikiwa ni lazima, unaweza kuzuia kila kitu kwenye firewall na kuruhusu ufikiaji wa seva pekee kupitia vichuguu (TOR au VPN ni jambo lingine). Kwa hivyo, seva itakatwa kutoka kwa ulimwengu wa nje iwezekanavyo, na sisi wenyewe tu tutaweza kushawishi upatikanaji wake.
Kutowezekana kwa kukataa - Na hii inategemea utendakazi zaidi na kufuata sera sahihi za haki za mtumiaji, ufikiaji, nk. Lakini kwa mbinu sahihi, vitendo vyote vya mtumiaji vinakaguliwa, na shukrani kwa ufumbuzi wa cryptographic inawezekana kutambua bila shaka ni nani aliyefanya vitendo fulani na wakati gani.
Kwa kweli, usanidi ulioelezewa sio mfano kamili wa jinsi inavyopaswa kuwa kila wakati, ni mfano mmoja wa jinsi inavyoweza kuwa, huku ukihifadhi uwezo unaonyumbulika sana wa kuongeza na kubinafsisha.
Vipi kuhusu uboreshaji kamili?
Kuhusu uboreshaji kamili kwa kutumia cbsd unaweza bhyve
Unahitaji kuwezesha chaguzi kadhaa za kernel.
# cat /etc/rc.conf
...
kld_list="vmm if_tap if_bridge nmdm"
...
# cat /boot/loader.conf
...
vmm_load="YES"
...
Kwa hivyo ikiwa unahitaji ghafla kuanza docker, kisha usakinishe debian na uende!
Ni hayo tu
Nadhani hiyo ndiyo yote nilitaka kushiriki. Ikiwa ulipenda nakala hiyo, basi unaweza kunitumia bitcoins -
Chanzo: mapenzi.com