Bitcoin sa usa ka hawla?

Nahitabo kini nga pinaagi sa propesyon ako usa ka administrador sa mga sistema sa kompyuter ug mga network (sa laktud: system administrator), ug nakahigayon ako nga isulti sa prof. ang mga kalihokan sa usa ka halapad nga lainlain nga sistema, lakip ang mga nanginahanglan [labi nga] mga lakang sa seguridad. Nahitabo usab nga pipila ka mga panahon ang milabay nakit-an nako kini nga makapaikag bitcoin, ug dili lamang gigamit kini, apan naglunsad usab og daghang mga micro-service aron makat-on kung unsaon pagtrabaho nga independente sa Bitcoin network (aka p2p human sa tanan) gikan sa punto sa panglantaw sa usa ka developer (ako siyempre usa sa mga dev, so, nilabay ko). Apan wala ako maghisgot bahin sa pag-uswag, naghisgut ako bahin sa usa ka luwas ug episyente nga palibot alang sa mga aplikasyon.

Pinansyal nga teknolohiya (fintech) adto sunod sa seguridad sa impormasyon (infosec) ug ang una makatrabaho nga wala ang ikaduha, apan dili magdugay. Mao nga gusto nakong ipaambit ang akong kasinatian ug ang set sa mga himan nga akong gigamit, nga naglakip sa duha fintech, ug infosec, ug sa samang higayon, ug mahimo usab nga gamiton alang sa mas lapad o hingpit nga lahi nga katuyoan. Sa kini nga artikulo, isulti ko kanimo dili kaayo bahin sa Bitcoin, apan bahin sa modelo sa imprastraktura alang sa pagpalambo ug operasyon sa pinansyal (ug dili lamang) nga mga serbisyo - sa usa ka pulong, kadtong mga serbisyo diin ang "B" hinungdanon. Kini magamit sa duha sa Bitcoin exchange ug sa labing tipikal nga corporate zoo sa mga serbisyo sa usa ka gamay nga kompanya nga wala konektado sa Bitcoin sa bisan unsa nga paagi.

Gusto nakong timan-an nga tigpaluyo ko sa mga prinsipyo "ipadayon kini nga hungog nga simple" ΠΈ "mas daghan ang gamay", busa, ang artikulo ug ang gihubit niini adunay mga kabtangan nga gipasabut niini nga mga prinsipyo.

Hinanduraw nga senaryo: Atong tan-awon ang tanan gamit ang pananglitan sa usa ka bitcoin exchanger. Nakahukom kami nga ilunsad ang pagbinayloay sa mga rubles, dolyar, euro alang sa bitcoins ug likod, ug kami adunay usa ka nagtrabaho nga solusyon, apan alang sa ubang mga digital nga salapi sama sa qiwi ug webmoney, i.e. Gisirado na namo ang tanang legal nga mga isyu, kami adunay andam nga aplikasyon nga nagsilbing ganghaan sa pagbayad alang sa mga rubles, dolyar ug euro ug uban pang sistema sa pagbayad. Konektado kini sa among mga bank account ug adunay usa ka matang sa API para sa among katapusan nga mga aplikasyon. Adunay usab kami usa ka aplikasyon sa web nga naglihok ingon usa ka tigbaylo alang sa mga tiggamit, maayo, sama sa usa ka tipikal nga qiwi o webmoney account - paghimo usa ka account, pagdugang usa ka kard, ug uban pa. Nakigsulti kini sa among aplikasyon sa gateway, bisan pinaagi sa REST API sa lokal nga lugar. Ug busa nakahukom kami sa pagkonektar sa mga bitcoin ug sa samang higayon pag-upgrade sa imprastraktura, tungod kay... Sa sinugdan, ang tanan gibutang sa pagdali sa virtualboxes sa opisina sa ilalum sa lamesa... ang site nagsugod sa paggamit, ug kami nagsugod sa pagkabalaka mahitungod sa uptime ug performance.

Mao nga, magsugod kita sa panguna nga butang - pagpili sa usa ka server. Kay ang negosyo sa among panig-ingnan gamay ra ug kami nagsalig sa hoster (OVH) nga among pilion usa ka kapilian sa badyet diin imposible nga i-install ang sistema gikan sa orihinal nga .iso nga imahe, apan dili igsapayan, ang departamento sa seguridad sa IT siguradong analisahon ang na-install nga imahe. Ug sa dihang kita modako na, kita mag-abang sa atong kaugalingong aparador ubos sa kandado ug yawe nga adunay limitado nga pisikal nga pag-access, ug tingali kita magtukod sa atong kaugalingon nga DC. Sa bisan unsa nga kaso, angay nga hinumdoman nga kung nag-abang sa hardware ug nag-install sa andam nga mga imahe, adunay higayon nga adunay usa ka "Trojan gikan sa host" nga nagbitay sa imong sistema, nga sa kadaghanan nga mga kaso wala gituyo aron ma-espiya kanimo. apan sa paghalad sa mas sayon ​​nga pagdumala himan server.

Pag-instalar sa server

Ang tanan yano dinhi. Gipili namo ang hardware nga mohaum sa among mga panginahanglan. Unya pilia ang FreeBSD nga imahe. Aw, o kita magkonektar (sa kaso sa laing hoster ug sa atong kaugalingong hardware) pinaagi sa IPMI o sa usa ka monitor ug pakan-a ang .iso FreeBSD nga larawan ngadto sa download. Para sa orchestral setup akong gigamit Ansible ΠΈ mfsbsd. Ang bugtong butang, sa among kaso sa kimsufi, among gipili naandan nga pag-instalar aron ang duha ka mga disk sa salamin adunay "bukas" lamang ang boot ug / home partitions, ang nahabilin nga disk space ma-encrypt, apan labaw pa niana sa ulahi.

Bitcoin sa usa ka hawla?

Ang pag-instalar sa sistema mahitabo sa usa ka standard nga paagi, dili ako maghisgot niini, mamatikdan ra nako nga sa wala pa magsugod ang operasyon angay nga hatagan pagtagad -a mga opsyon nga gitanyag niini bsdinstaller sa katapusan sa pag-instalar (kung ikaw mismo ang nag-install sa sistema):

Bitcoin sa usa ka hawla?

Adunay maayo nga materyal sa niini nga hilisgutan, ako sa makadiyot balik niini dinhi.

Posible usab nga ma-enable ang nahisgutan nga mga parameter sa usa ka na-install na nga sistema. Aron mahimo kini, kinahanglan nimo nga i-edit ang bootloader file ug i-enable ang mga parameter sa kernel. *ee usa ka editor nga sama niini sa 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

Kinahanglan usab nga imong sigurohon nga ikaw adunay pinakabag-o nga bersyon sa sistema nga na-install, ug paghimo sa tanan nga mga pag-update ug pag-upgrade. Sa among kaso, pananglitan, gikinahanglan ang pag-upgrade sa pinakabag-o nga bersyon, tungod kay... Ang mga hulagway sa pre-installation nalangan sa unom ka bulan ngadto sa usa ka tuig. Aw, didto gibag-o namon ang SSH port sa usa ka butang nga lahi sa default, idugang ang yawe nga pag-authenticate ug pag-disable ang pag-authenticate sa password.

Unya among gi-configure aide, pagmonitor sa kahimtang sa mga file sa pagsumpo sa sistema. Mahimo nimong basahon ang dugang nga detalye dinhi.

pkg install aide

ug i-edit ang among 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

Padayon pag-audit sa sistema

sysrc auditd_enable=YES

# service auditd start

Kung giunsa pagdumala kini nga butang hingpit nga gihulagway sa pagpangulo.

Karon nag-reboot kami ug nagpadayon sa software sa server. Ang matag server usa ka hypervisor alang sa mga sudlanan o bug-os nga virtual machine. Busa, importante nga ang processor nagsuporta sa VT-x ug EPT kon kita nagplano sa paggamit sa bug-os nga virtualization.

Sa pagdumala sa mga sudlanan ug mga virtual machine nga akong gigamit cbsd gikan sa olevole, nanghinaut ko nga siya dugang nga kahimsog ug mga panalangin alang niining talagsaon nga gamit!

Mga sudlanan? Docker pag-usab o unsa?

Apan dili. FreeBSD Jails mao ang usa ka maayo kaayo nga himan alang sa containerization, apan ang gihisgotan cbsd sa pag-orchestrate niini nga mga sudlanan, nga gitawag nga mga selula.

Ang hawla usa ka labi ka epektibo nga solusyon alang sa pagtukod sa imprastraktura alang sa lainlaing mga katuyoan, diin ang hingpit nga pag-inusara sa mga indibidwal nga serbisyo o proseso sa katapusan gikinahanglan. Sa tinuud, kini usa ka clone sa host system, apan wala kini magkinahanglan og bug-os nga virtualization sa hardware. Ug salamat niini, ang mga kapanguhaan wala gigasto sa "guest OS", apan sa trabaho nga gihimo. Kung ang mga cell gigamit alang sa internal nga mga panginahanglan, kini usa ka kombenyente kaayo nga solusyon alang sa labing maayo nga paggamit sa kapanguhaan - usa ka hugpong sa mga selyula sa usa ka server sa hardware ang matag usa mahimong mogamit sa tibuuk nga kapanguhaan sa server kung kinahanglan. Gikonsiderar nga kasagaran ang lainlaing mga subservice nanginahanglan dugang. mga kapanguhaan sa lain-laing mga panahon, mahimo nimong makuha ang labing kataas nga pasundayag gikan sa usa ka server kung imong giplano ug gibalanse ang mga selyula tali sa mga server. Kung gikinahanglan, ang mga selula mahimo usab nga hatagan og mga pagdili sa kapanguhaan nga gigamit.

Bitcoin sa usa ka hawla?

Unsa ang mahitungod sa bug-os nga virtualization?

Ingon sa akong nahibal-an cbsd nagsuporta sa trabaho bhyve ug XEN hypervisors. Wala pa nako gigamit ang ikaduha, apan ang una medyo bag-o hypervisor gikan sa FreeBSD. Atong tan-awon ang usa ka pananglitan sa paggamit bhyve sa pananglitan sa ubos.

Pag-instalar ug Pag-configure sa Host Environment

Gigamit namo ang FS ZFS. Kini usa ka labi ka kusgan nga himan alang sa pagdumala sa wanang sa server. Salamat sa ZFS, mahimo nimong direkta nga maghimo mga arrays sa lainlaing mga pag-configure gikan sa mga disk, dinamikong "init" nga pagpalapad sa wanang, pagbag-o sa mga patay nga disk, pagdumala sa mga snapshot, ug daghan pa, nga mahimong gihulagway sa tibuuk nga serye sa mga artikulo. Balikan nato ang atong server ug ang mga disk niini. Sa sinugdanan sa pag-instalar, nagbilin kami og libre nga luna sa mga disk alang sa mga naka-encrypt nga partisyon. Ngano man? Kini aron ang sistema awtomatikong makamata ug maminaw pinaagi sa SSH.

gpart add -t freebsd-zfs /dev/ada0

/dev/ada0p4 added!

pagdugang usa ka partition sa disk sa nahabilin nga wanang

geli init /dev/ada0p4

isulod ang among encryption password

geli attach /dev/ada0p4

Gisulod namo pag-usab ang password ug kami adunay usa ka device /dev/ada0p4.eli - kini ang among na-encrypt nga luna. Unya gisubli namo ang parehas alang sa / dev / ada1 ug ang nahabilin nga mga disk sa laray. Ug naghimo kami usa ka bag-o ZFS pool.

zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli - Aw, andam na ang minimum nga combat kit. Usa ka salamin nga han-ay sa mga disk kung ang usa sa tulo mapakyas.

Paghimo usa ka dataset sa usa ka bag-ong "pool"

zfs create vms/jails

pkg install cbsd β€” Naglunsad kami og usa ka team ug nag-set up sa pagdumala sa among mga cell.

Human sa cbsd instalar, kini kinahanglan nga magsugod:

# env workdir="/vms/jails" /usr/local/cbsd/sudoexec/initenv

Aw, gitubag namo ang daghang mga pangutana, kasagaran adunay mga default nga tubag.

* Kung naggamit ka og encryption, importante nga ang daemon cbsdd wala magsugod awtomatiko hangtod nga imong gi-decrypt ang mga disk sa mano-mano o awtomatiko (sa among pananglitan kini gihimo sa zabbix)

** Dili usab ako mogamit sa NAT gikan sa cbsd, ug ako mismo ang nag-configure niini 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

Ang pag-set up sa mga polisiya sa firewall usa usab ka linain nga hilisgutan, mao nga dili na ko mag-set up sa BLOCK ALL nga polisiya ug pag-set up sa mga whitelist, mahimo nimo kana pinaagi sa pagbasa opisyal nga dokumentasyon o bisan unsa sa daghang mga artikulo nga magamit sa Google.

Aw... na-install na namo ang cbsd, panahon na sa paghimo sa among unang workhorse - ang caged Bitcoin demon!

cbsd jconstruct-tui

Bitcoin sa usa ka hawla?

Dinhi atong makita ang dialog sa paghimo sa cell. Human mabutang ang tanan nga mga kantidad, maghimo kita!

Sa paghimo sa imong unang cell, kinahanglan nimo nga pilion kung unsa ang gamiton isip base sa mga selula. Nagpili ako usa ka pag-apod-apod gikan sa repositoryo sa FreeBSD nga adunay mando repo. Kini nga pagpili gihimo lamang kung maghimo sa unang cell sa usa ka piho nga bersyon (mahimo nimong i-host ang mga cell sa bisan unsang bersyon nga mas tigulang kaysa host nga bersyon).

Human ma-install ang tanan, gilansad namo ang hawla!

# cbsd jstart bitcoind

Apan kinahanglan namon nga i-install ang software sa hawla.

# jls

   JID  IP Address      Hostname                      Path
     1  192.168.0.1     bitcoind.space.com            /zroot/jails/jails/bitcoind

jexec bitcoind aron makasulod sa cell console

ug naa na sa sulod sa cell among gi-install ang software nga adunay mga dependency (ang among host system nagpabilin nga limpyo)

bitcoind:/@[15:25] # pkg install bitcoin-daemon bitcoin-utils

bitcoind:/@[15:30] # sysrc bitcoind_enable=YES

bitcoind:/@[15:30] # service bitcoind start

Adunay Bitcoin sa hawla, apan kinahanglan namon nga dili mailhan tungod kay gusto namon nga makonektar sa pipila ka mga hawla pinaagi sa TOP network. Sa kinatibuk-an, nagplano kami nga modagan ang kadaghanan sa mga cell nga adunay kadudahang software pinaagi lamang sa usa ka proxy. Salamat sa pf Mahimo nimong i-disable ang NAT alang sa usa ka piho nga mga IP address sa lokal nga network, ug tugotan ang NAT alang lamang sa among TOR node. Busa, bisan kung ang malware mosulod sa cell, lagmit dili kini makigkomunikar sa gawas nga kalibutan, ug kung mahitabo kini, dili kini ipadayag ang IP sa among server. Busa, naghimo kami og laing cell aron "ipasa" ang mga serbisyo isip ".onion" nga serbisyo ug isip proxy alang sa pag-access sa Internet ngadto sa indibidwal nga mga selula.

# 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

Itakda aron maminaw sa usa ka lokal nga adres (anaa alang sa tanan nga mga cell)

SOCKSPort 192.168.0.2:9050

Unsa pa ang atong gikinahanglan alang sa hingpit nga kalipay? Oo, kinahanglan namon ang serbisyo para sa among web, tingali labaw pa sa usa. Atong ilunsad ang nginx, nga molihok isip reverse-proxy ug mag-atiman sa pag-renew sa Let's Encrypt certificates

# cbsd jsconstruct-tui

# cbsd jstart nginx-rev

# jexec nginx-rev

nginx-rev:/@[15:47] # pkg install nginx py36-certbot

Ug busa gibutang namon ang 150 MB nga mga dependency sa usa ka hawla. Ug limpyo pa ang tagbalay.

Balik ta sa pag-set up sa nginx sa ulahi, kinahanglan namong ipataas ang duha pa ka mga cell para sa among gateway sa pagbayad sa mga nodejs ug taya ug usa ka aplikasyon sa web, nga sa pipila ka mga hinungdan naa sa Apache ug PHP, ug ang ulahi nanginahanglan usab usa ka database sa 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

...ug laing 380 MB sa mga pakete gilain

Sunod, among gi-download ang among aplikasyon gamit ang git ug ilunsad kini.

# cbsd jsconstruct-tui

# cbsd jstart webapp

# jexec webapp

webapp:/@[16:02] # pkg install mariadb104-server apache24 php74 mod_php74 php74-pdo_mysql

450 MB nga mga pakete. sa usa ka halwa.

dinhi gihatagan namo ang developer og access pinaagi sa SSH direkta sa cell, buhaton nila ang tanan didto mismo:

webapp:/@[16:02] # ee /etc/ssh/sshd_config

Port 2267 - usba ang SSH port sa cell sa bisan unsang arbitraryo

webapp:/@[16:02] # sysrc sshd_enable=YES

webapp:/@[16:02] # service sshd start

Aw, ang serbisyo nagdagan, ang nahabilin mao ang pagdugang sa lagda sa pf firewall

Atong tan-awon kung unsa ang IP sa atong mga selyula ug unsa ang hitsura sa atong "lokal nga lugar".

# 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

ug pagdugang usa ka lagda

# 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

Aw, tungod kay ania na kita, magdugang usab kita usa ka lagda alang sa reverse-proxy:

## 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

Aw, karon gamay bahin sa bitcoins

Ang naa kanamo mao nga kami adunay usa ka web application nga nahayag sa gawas ug kini nakigsulti sa lokal sa among gateway sa pagbayad. Karon kinahanglan namon nga mag-andam usa ka palibot sa pagtrabaho alang sa pagpakig-uban sa network sa Bitcoin mismo - ang node bitcoind kini usa lamang ka daemon nga nagpadayon sa lokal nga kopya sa blockchain hangtod karon. Kini nga daemon adunay RPC ug wallet functionality, apan adunay mas sayon ​​​​nga "wrappers" alang sa pagpalambo sa aplikasyon. Sa pagsugod, nakahukom kami nga ibutang electrum usa ka CLI nga pitaka. Kini nga pitaka gamiton namo kini isip "cold storage" para sa among mga bitcoin - sa kinatibuk-an, kadtong mga bitcoin nga kinahanglan nga tipigan "sa gawas" sa sistema nga ma-access sa mga tiggamit ug sa kasagaran layo sa tanan. Adunay usab kini GUI, mao nga gamiton namon ang parehas nga pitaka sa among
mga laptop. Sa pagkakaron atong gamiton ang Electrum sa mga pampublikong server, ug sa ulahi atong ipataas kini sa laing cell ElectrumXpara dili na magsalig ni bisan kinsa.

# cbsd jsconstruct-tui

# cbsd jstart electrum

# jexec electrum

electrum:/@[8:45] # pkg install py36-electrum

laing 700 MB nga software sa among halwa

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"
}

Karon naa miy nabuhat nga pitaka.

wallet@electrum:/ % electrum-3.6 listaddresses

[
    "18WEhbjvMLGRMfwudzUrUd25U5C7uZYkzE",
    "14XHSejhxsZNDRtk4eFbqAX3L8rftzwQQU",
    "1KQXaN8RXiCN1ne9iYngUWAr6KJ6d4pPas",
    ...
    "1KeVcAwEYhk29qEyAfPwcBgF5mMMoy4qjw",
    "18VaUuSeBr6T2GwpSHYF3XyNgLyLCt1SWk"
]

wallet@electrum:/ % electrum-3.6 help

Sa atong sa kadena Limitado ra nga gidaghanon sa mga tawo ang makakonekta sa pitaka gikan karon. Aron dili maablihan ang pag-access niini nga cell gikan sa gawas, ang mga koneksyon pinaagi sa SSH mahitabo pinaagi sa TOP (usa ka desentralisado nga bersyon sa VPN). Among gilunsad ang SSH sa cell, apan ayaw paghikap sa among pf.conf sa host.

electrum:/@[9:00] # sysrc sshd_enable=YES

electrum:/@[9:00] # service sshd start

Karon atong palongon ang cell nga adunay access sa Internet sa pitaka. Hatagan nato kini og IP address gikan sa laing subnet space nga dili NATed. Unahon nato /etc/pf.conf sa host

# ee /etc/pf.conf

JAIL_IP_POOL="192.168.0.0/24" ilisan nato sa JAIL_IP_POOL="192.168.0.0/25", busa ang tanang mga adres 192.168.0.126-255 walay direktang access sa Internet. Usa ka matang sa software nga "air-gap" network. Ug ang pagmando sa NAT nagpabilin nga ingon kaniadto

nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC

Pag-overload sa mga lagda

# pfctl -f /etc/pf.conf

Karon atong kuhaon ang atong selda

# cbsd jconfig jname=electrum

Bitcoin sa usa ka hawla?

Bitcoin sa usa ka hawla?

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, apan karon ang sistema mismo mohunong sa pagtrabaho alang kanamo. Bisan pa, mahimo naton ipiho ang usa ka proxy sa sistema. Apan adunay usa ka butang, sa TOR kini usa ka proxy sa SOCKS5, ug alang sa kasayon ​​gusto usab namon ang usa ka proxy nga 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

Aw, karon adunay duha ka proxy server sa among sistema, ug pareho nga output pinaagi sa TOR: socks5://192.168.0.2:9050 ug http://192.168.0.6:8123

Karon mahimo na namon nga i-configure ang among palibot sa pitaka

# 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

Aw, karon ang kabhang magtrabaho gikan sa ilawom sa usa ka proxy. Kung gusto namon i-install ang mga pakete, kinahanglan namon nga idugang /usr/local/etc/pkg.conf gikan sa ilawom sa gamut sa hawla

pkg_env: {
               http_proxy: "http://my_proxy_ip:8123",
           }

Aw, karon na ang panahon nga idugang ang tinago nga serbisyo sa TOR ingon nga adres sa among serbisyo sa SSH sa cell pitaka.

# 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

Kini ang among adres sa koneksyon. Atong susihon gikan sa lokal nga makina. Apan una kinahanglan natong idugang ang atong SSH key:

wallet@electrum:/ % mkdir ~/.ssh

wallet@electrum:/ % ee ~/.ssh/authorized_keys

ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAG9Fk2Lqi4GQ8EXZrsH3EgSrVIQPQaAlS38MmJLBabihv9KHIDGXH7r018hxqLNNGbaJWO/wrWk7sG4T0yLHAbdQAFsMYof9kjoyuG56z0XZ8qaD/X/AjrhLMsIoBbUNj0AzxjKNlPJL4NbHsFwbmxGulKS0PdAD5oLcTQi/VnNdU7iFw== user@local

Aw, gikan sa makina sa kliyente sa 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

Magkonektar ta (Aron kini molihok, kinahanglan nimo ang usa ka lokal nga daemon sa TOR nga naminaw sa 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

Kalampusan!

Aron makatrabaho uban ang instant ug micro-payments, nagkinahanglan usab kami og node Lightning Network, sa tinuud, kini ang among panguna nga himan sa pagtrabaho kauban ang Bitcoin. U*c-kilatnga atong gamiton isip usa ka daemon Sparko plugin, nga usa ka bug-os nga HTTP (REST) ​​​​interface ug nagtugot kanimo sa pagtrabaho kauban ang mga off-chain ug on-chain nga mga transaksyon. c-lightning gikinahanglan alang sa pag-obra bitcoind pero oo.

*Adunay lain-laing mga pagpatuman sa Lightning Network protocol sa lain-laing mga pinulongan. Sa mga nasulayan namon, ang c-kilat (gisulat sa C) ingon ang labing lig-on ug episyente sa kapanguhaan.

# 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

Samtang ang tanan nga gikinahanglan gitipon ug gi-install, maghimo kita usa ka tiggamit sa 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

Ang akong gubot nga pagbalhin sa taliwala sa mga selyula nahimo nga dili kaayo gubot kung imong namatikdan ang utility tmux, nga nagtugot kanimo sa paghimo og daghang mga sub-session sa terminal sulod sa usa ka sesyon. Analogue: screen

Bitcoin sa usa ka hawla?

Busa, dili namo gusto nga ibutyag ang tinuod nga IP sa among node, ug gusto namo nga ipahigayon ang tanang pinansyal nga transaksyon pinaagi sa TOP. Busa, dili kinahanglan ang laing .sibuyas.

# 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

Karon maghimo kita ug config para sa 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 ~

kinahanglan ka usab nga maghimo usa ka configuration file alang sa bitcoin-cli, usa ka utility nga nakigsulti bitcoind

lightning@lightning:~ % mkdir .bitcoin

lightning@lightning:~ % ee .bitcoin/bitcoin.conf

rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=test

pagsusi

lightning@lightning:~ % bitcoin-cli echo "test"

[
  "test"
]

paglusad lightningd

lightning@lightning:~ % lightningd --daemon

Mismo iyang kaugalingon lightningd makontrol nimo ang utility lightning-clisama pananglit:

lightning-cli newaddr kuhaa ang adres para sa bag-ong umaabot nga bayad

{
   "address": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv",
   "bech32": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv"
}

lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all ipadala ang tanang kwarta sa pitaka sa adres (tanan nga on-chain nga adres)

Usab mga sugo alang sa off-chain nga mga operasyon lightning-cli invoice, lightning-cli listinvoices, lightning-cli pay ug uban pa

Aw, alang sa komunikasyon sa aplikasyon kami adunay REST Api

curl -k https://192.168.0.7:9737/rpc -d '{"method": "pay", "params": ["lnbc..."]}' -H 'X-Access masterkey'

Himoon naton ang mga resulta

# 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

Bitcoin sa usa ka hawla?

Kami adunay usa ka set sa mga sudlanan, ang matag usa adunay kaugalingon nga lebel sa pag-access gikan ug sa lokal nga network.

# 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

Sama sa imong nakita, ang bitcoind nagkuha sa tanan nga 190 GB nga wanang. Unsa kaha kung kinahanglan namon ang laing node alang sa pagsulay? Dinhi diin magamit ang ZFS. Uban sa tabang cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com makahimo ka og snapshot ug mag-attach og bag-ong cell niini nga snapshot. Ang bag-ong cell adunay kaugalingon nga wanang, apan ang kalainan lamang tali sa karon nga kahimtang ug ang orihinal ang pagaisipon sa file system (makatipig kami labing menos 190 GB)

Ang matag cell adunay kaugalingon nga lahi nga ZFS dataset, ug kini labi ka kombenyente. Gitugotan usab sa ZFS pagbuhat sa lain-laing mga cool nga mga butang, sama sa pagpadala snapshots pinaagi sa SSH. Dili nato kini ihulagway, daghan na.

Angayan usab nga matikdan ang panginahanglan alang sa hilit nga pag-monitor sa host, alang sa kini nga mga katuyoan nga naa kanato Zabbix.

B - kaluwasan

Mahitungod sa seguridad, magsugod kita gikan sa mahinungdanong mga prinsipyo sa konteksto sa imprastraktura:

Pagkumpidensyal - Ang mga standard nga himan sa mga sistema nga sama sa UNIX nagsiguro sa pagpatuman niini nga prinsipyo. Kami lohikal nga nagbulag sa pag-access sa matag lohikal nga lahi nga elemento sa sistema - usa ka cell. Ang access gihatag pinaagi sa standard user authentication gamit ang personal nga mga yawe sa mga user. Ang tanan nga komunikasyon tali ug hangtod sa katapusan nga mga selyula mahitabo sa naka-encrypt nga porma. Salamat sa pag-encrypt sa disk, dili kami kinahanglan mabalaka bahin sa kaluwasan sa datos kung mag-ilis sa usa ka disk o mobalhin sa lain nga server. Ang bugtong kritikal nga pag-access mao ang pag-access sa host system, tungod kay ang ingon nga pag-access sa kasagaran naghatag access sa datos sa sulod sa mga sudlanan.

Integridad "Ang pagpatuman niini nga prinsipyo mahitabo sa lainlaing lebel. Una, importante nga timan-an nga sa kaso sa server hardware, ECC memory, ZFS na β€œout of the box” nag-atiman sa data integrity sa lebel sa impormasyon bits. Ang mga instant snapshot nagtugot kanimo sa paghimo og mga backup sa bisan unsang oras sa langaw. Ang sayon ​​nga cell export/import nga mga himan naghimo sa cell replication nga simple.

Pagkaon - Opsyonal na kini. Nagdepende sa lebel sa imong kabantog ug sa kamatuoran nga ikaw adunay mga nagdumot. Sa among pananglitan, among gisiguro nga ang pitaka ma-access lamang gikan sa TOP network. Kung gikinahanglan, mahimo nimong babagan ang tanan sa firewall ug tugutan ang pag-access sa server nga eksklusibo pinaagi sa mga tunnels (TOR o VPN lain nga butang). Sa ingon, ang server pagaputlon gikan sa gawas nga kalibutan kutob sa mahimo, ug kami ra ang makahimo sa pag-impluwensya sa pagkaanaa niini.

Imposible sa pagdumili - Ug kini nagdepende sa dugang nga operasyon ug pagsunod sa husto nga mga palisiya alang sa mga katungod sa tiggamit, pag-access, ug uban pa. Apan sa husto nga pamaagi, ang tanan nga mga aksyon sa gumagamit gi-audit, ug salamat sa mga solusyon sa cryptographic posible nga mahibal-an nga dili klaro kung kinsa ang naghimo sa pipila nga mga aksyon ug kung kanus-a.

Siyempre, ang gihulagway nga pag-configure dili usa ka hingpit nga panig-ingnan kung giunsa kini kinahanglan kanunay, kini usa ka pananglitan kung giunsa kini mahimo, samtang gipadayon ang labi ka dali nga pag-scale ug mga kapabilidad sa pag-customize.

Unsa ang mahitungod sa bug-os nga virtualization?

Mahitungod sa hingpit nga virtualization gamit ang cbsd mahimo nimo basaha dinhi. Idugang ko lang kana alang sa trabaho bhyve Kinahanglan nimong palihokon ang pipila ka mga kapilian sa kernel.

# cat /etc/rc.conf

...
kld_list="vmm if_tap if_bridge nmdm"
...

# cat /boot/loader.conf

...
vmm_load="YES"
...

Mao nga kung kalit ka kinahanglan nga magsugod sa usa ka docker, unya i-install ang pipila ka debian ug lakaw!

Bitcoin sa usa ka hawla?

Mao ra

Sa akong hunahuna mao ra kana ang gusto nakong ipaambit. Kung ganahan ka sa artikulo, mahimo nimong ipadala kanako ang pipila ka mga bitcoin - bc1qu7lhf45xw83ddll5mnzte6ahju8ktkeu6qhttc. Kung gusto nimo sulayan ang mga cell sa aksyon ug adunay pipila ka mga bitcoin, mahimo ka moadto sa akong pet-proyekto.

Source: www.habr.com