Wisa bû ku ez bi pîşeyê xwe rêvebirê sîstem û torên kompîturê me (bi kurtî: gerînendeyê pergalê), û ji 10 salan zêdetir derfeta min hebû ku ez ji prof. çalakiyên cûrbecûr pergalan, di nav de yên ku hewceyê tedbîrên ewlehiyê yên [bilind] in. Ev jî çêbû ku demek berê min ew balkêş dît , û ne tenê ew bikar anî, lê di heman demê de gelek karûbarên mîkro jî da destpêkirin da ku fêr bibe ka meriv çawa bi tora Bitcoin re (herî din jî p2p) ji nêrîna pêşdebirek serbixwe kar dike (bê guman ez yek ji wan im dev, loma, ez derbas dibûm). Lê ez behsa pêşveçûnê nakim, ez behsa hawîrdorek ewledar û bikêrhatî ji bo sepanan dikim.
Teknolojiya darayî (fintech) li tenişta ewlehiya agahdariyê biçin (infosec) û ya yekem dikare bêyî ya duyemîn bixebite, lê ne ji bo dirêj. Ji ber vê yekê ez dixwazim ezmûna xwe û komek amûrên ku ez bikar tînim, ku her du jî tê de, parve bikim fintech, û infosec, û di heman demê de, û her weha dikare ji bo armancek berfireh an bi tevahî cûda were bikar anîn. Di vê gotarê de ez ê ne pir li ser Bitcoin, lê li ser modela binesaziyê ji bo pêşkeftin û xebitandina karûbarên darayî (û ne tenê) ji we re bibêjim - bi gotinek, ew karûbarên ku "B" girîng e. Ev hem ji bo danûstendina Bitcoin û hem jî ji bo karûbarên zozanên pargîdanî yên herî tîpîk ên pargîdaniyek piçûk ku bi ti awayî bi Bitcoin ve ne girêdayî ye derbas dibe.
Ez dixwazim bibêjim ku ez alîgirê prensîban im "ew sade bihêle" и "kêmtir pirtir e", ji ber vê yekê, hem gotar û hem jî ya ku tê de tête diyar kirin dê xwediyê taybetmendiyên ku van prensîban li ser in.
Senaryoya xeyalî: Ka em li her tiştî bi mînakek veguherînerek bitcoin binihêrin. Me biryar da ku em pevguhertina ruble, dolar, ewro ji bo bitcoin û paş ve bidin destpêkirin, û me jixwe çareseriyek xebatê heye, lê ji bo pereyên dîjîtal ên mîna qiwi û webmoney, yanî. Me hemî pirsgirêkên qanûnî girtine, me serîlêdanek amade heye ku wekî dergehek dravdana rûbil, dolar û ewro û pergalên dravdanê yên din kar dike. Ew bi hesabên me yên bankê ve girêdayî ye û ji bo serîlêdanên dawiya me cûreyek API heye. Di heman demê de serîlêdanek me ya webê heye ku ji bo bikarhêneran wekî guhezker tevdigere, baş e, mîna hesabek qiwi an webmoney-ya tîpîk - hesabek biafirîne, qertek lê zêde bike, û hwd. Ew bi serîlêdana dergehê me re, her çend bi REST API-ya li qada herêmî re têkilî daynin. Ji ber vê yekê me biryar da ku bitcoins ve girêbidin û di heman demê de binesaziyê nûve bikin, ji ber ... Di destpêkê de, her tişt bi lez û bez li ser virtualboxên di nivîsgehê de di bin sifrê de hate danîn... malper dest bi karanîna kir, û me dest bi fikaran kir li ser dem û performansê.
Ji ber vê yekê, em bi ya sereke dest pê bikin - hilbijartina serverek. Bo karsaziya di mînaka me de piçûk e û em ji mêvandarê (OVH) bawer dikin ku em ê hilbijêrin tê de ne gengaz e ku pergalê ji wêneya .iso ya orîjînal saz bike, lê ne girîng e, beşa ewlehiya IT-ê bê guman dê wêneya sazkirî analîz bike. Û gava ku em mezin bibin, em ê dolaba xwe ya di bin kilît û mifteyê de bi gihîştina laşî ya tixûbdar kirê bikin, û dibe ku em ê DC-ya xwe ava bikin. Di her rewşê de, hêja ye ku ji bîr mekin ku dema kirêkirina hardware û sazkirina wêneyên amadekirî, şansek heye ku hûn ê "Trojanek ji mêvandar" li ser pergala we daliqînin, ku di pir rewşan de ne armanc e ku hûn li we sîxurî bikin. lê ji bo pêşkêşkirina serverê amûrên rêveberiya hêsantir.
Sazkirina serverê
Li vir her tişt hêsan e. Em hardware ku li gorî hewcedariyên me tê hildibijêrin. Dûv re wêneya FreeBSD hilbijêrin. Welê, an jî em (di doza mêvandarek din û hardware ya xwe de) bi IPMI an bi çavdêriyek ve girêdidin û wêneya .iso FreeBSD di dakêşanê de bihêlin. Ji bo sazkirina orkestrayê ez bikar tînim и . Tekane tişt, di doza me de bi kimsufi, me hilbijart sazkirina xwerû ji bo ku du dîskên di neynikê de tenê dabeşên boot û /malê "vekirî" bin, cîhê dîskê yê mayî dê were şîfre kirin, lê li ser wê paşê bêtir.

Sazkirina pergalê bi rengek standard pêk tê, ez ê li ser vê yekê nesekinim, ez ê tenê destnîşan bikim ku berî destpêkirina operasyonê hêja ye ku bala xwe bidin ser hişk kirin vebijarkên ku ew pêşkêş dike bsdinstaller di dawiya sazkirinê de (heke hûn pergalê bi xwe saz bikin):

Ð • n, Nûh * de li ser vê mijarê, ez ê li vir bi kurtî dubare bikim.
Di heman demê de gengaz e ku meriv pîvanên jorîn li ser pergalek jixwe sazkirî çalak bike. Ji bo vê yekê, hûn hewce ne ku pelê bootloader biguherînin û pîvanên kernel çalak bikin. *ee di BSD de edîtorek bi vî rengî ye
# 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=1Her weha divê hûn pê ewle bin ku we guhertoya herî dawî ya pergalê saz kiriye, û . Di rewşa me de, wek nimûne, nûvekirinek ji guhertoya herî dawî re hewce ye, ji ber ku ... wêneyên pêş-sazkirinê şeş meh heta salek li paş dimînin. Welê, li wir em porta SSH-ê ji ya xwerû cûda cûda diguhezînin, pejirandina sereke lê zêde bikin û pejirandina şîfreyê neçalak bikin.
Piştre em mîheng dikin aide, şopandina rewşa pelên veavakirina pergalê. Hûn dikarin bi berfirehî bixwînin .
pkg install aide
û crontabê me biguherîne
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/$MYFILENAMEVekirin
sysrc auditd_enable=YES
# service auditd start
Meriv çawa vê mijarê bi rêve dibe di nav de bi tevahî tête diyar kirin .
Naha em ji nû ve dest pê dikin û berbi nermalava li ser serverê ve diçin. Her server ji bo konteynir an makîneyên tevahî virtual hîpervisorek e. Ji ber vê yekê, girîng e ku pêvajoyek VT-x û EPT piştgirî bike ger em plan dikin ku virtualbûna tevahî bikar bînin.
Ji bo birêvebirina konteyneran û makîneyên virtual ku ez bikar tînim ji , Ji bo vê karanîna hêja ez jê re bêtir tenduristî û bereketê dixwazim!
Konteyner? Docker dîsa an çi?
Lê na. ji bo konteynirkirinê amûrek hêja ye, lê ya ku hatî destnîşan kirin cbsd ji bo organîzekirina van konteynir, ku jê re hucre tê gotin.
Qefes ji bo avakirina binesaziyê ji bo cûrbecûr mebestan çareseriyek zehf bi bandor e, ku di dawiyê de îzolekirina tevahî ya karûbar an pêvajoyên kesane hewce ye. Di bingeh de, ew klonek pergala mêvandar e, lê ew ne hewceyî virtualîzasyona tevahî hardware ye. Û bi saya vê yekê, çavkanî ne li ser "OS-ya mêvan" têne xerc kirin, lê tenê li ser xebata ku têne kirin. Gava ku hucre ji bo hewcedariyên hundurîn têne bikar anîn, ev çareseriyek pir hêsan e ji bo karanîna çavkaniyek çêtirîn - komek hucre li ser yek serverek hardware dikare her kes bi rengek ferdî ger hewce bike tevahiya çavkaniya serverê bikar bîne. Bihesibînin ku bi gelemperî jêrxizmetên cûda hewceyê zêde hewce ne. çavkaniyên di demên cûda de, hûn dikarin performansa herî zêde ji yek serverê derxînin heke hûn bi rêkûpêk şaneyên di navbera serveran de plansaz bikin û hevseng bikin. Ger hewce be, hucreyan jî dikarin li ser çavkaniya ku têne bikar anîn sînorkirin bêne dayîn.

Li ser virtualbûna tevahî çi ye?
Bi qasî ku ez dizanim cbsd piştgirî dide xebatê bhyve û hîpervisorên XEN. Min çu carî ya duyemîn bikar neaniye, lê ya yekem nisbeten nû ye . Em ê mînakek bikar bînin bhyve di mînaka jêrîn de.
Sazkirin û Sazkirina Jîngeha Hostê
Em FS bikar tînin . Ev amûrek zehf bi hêz e ji bo birêvebirina cîhê serverê. Bi saya ZFS-ê, hûn dikarin rasterast ji dîskan rêzikên cûrbecûr mîhengan ava bikin, cîhê dînamîkî "germ" berfireh bikin, dîskên mirî biguhezînin, wêneyan bi rêve bibin, û pir û pir bêtir, ku dikarin di nav rêzek gotaran de werin vegotin. Ka em vegerin ser servera xwe û dîskên wê. Di destpêka sazkirinê de, me cîhê belaş li ser dîskan ji bo dabeşên şîfrekirî hiştin. Çima wisa ye? Ev ji ber vê yekê ye ku pergal bixweber şiyar dibe û bi SSH guhdarî dike.
gpart add -t freebsd-zfs /dev/ada0
/dev/ada0p4 added!
dabeşek dîskê li cîhê mayî zêde bike
geli init /dev/ada0p4
şîfreya me ya şîfrekirinê binivîse
geli attach /dev/ada0p4
Em dîsa şîfreyê dinivîsin û amûrek me heye /dev/ada0p4.eli - ev cîhê meya şîfrekirî ye. Dûv re em heman ji bo /dev/ada1 û dîskên mayî yên di rêzê de dubare dikin. Û em yekî nû ava dikin .
zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli - Belê, me kîtekîta şer a herî kêm amade ye. Di doza ku yek ji sêyan têk biçe komek dîskên neynîkî.
Afirandina danezanek li ser "pool"ek nû
zfs create vms/jails
pkg install cbsd - me tîmek damezrand û ji bo hucreyên xwe rêveberî saz kir.
Piştî cbsd saz kirin, pêdivî ye ku ew were destpêkirin:
# env workdir="/vms/jails" /usr/local/cbsd/sudoexec/initenv
Welê, em bersiva komek pirsan didin, bi piranî bi bersivên xwerû.
* Ger hûn şîfrekirinê bikar tînin, girîng e ku daemon cbsdd heya ku hûn dîskan bi destan an bixweber şîfre nekin bixweber dest pê nekir (di mînaka me de ev ji hêla zabbix ve hatî çêkirin)
** Ez ji NAT-ê jî bikar naynim cbsd, û ez bi xwe wê di nav de mîheng dikim 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
Sazkirina polîtîkayên dîwarê agir jî mijarek cihêreng e, ji ber vê yekê ez ê kûr neçim nav sazkirina polîtîkaya BLOCK ALL û danîna navnîşên spî, hûn dikarin bi xwendinê wiya bikin. an yek ji hejmareke mezin a gotarên li ser Google hene.
Welê... me cbsd saz kiriye, dem hatiye ku em keda xwe ya yekem biafirînin - cinê Bitcoin ê qefeskirî!
cbsd jconstruct-tui

Li vir em diyaloga çêkirina hucreyê dibînin. Piştî ku hemî nirx hatine danîn, em biafirînin!
Dema ku hucreya xweya yekem diafirîne, divê hûn hilbijêrin ka hûn wekî bingeh ji bo hucreyan bikar bînin. Ez bi fermanê dabeşek ji depoya FreeBSD hildibijêrim repo. Ev hilbijartin tenê dema afirandina şaneya yekem a guhertoyek taybetî tête çêkirin (hûn dikarin hucreyên her guhertoyek ku ji guhertoya mêvandar kevntir e mêvandar bikin).
Piştî ku her tişt hate saz kirin, em qefesê dest pê dikin!
# cbsd jstart bitcoind
Lê divê em nermalavê di qefesê de saz bikin.
# jls
JID IP Address Hostname Path
1 192.168.0.1 bitcoind.space.com /zroot/jails/jails/bitcoindjexec bitcoind ku bikeve konsolê hucreyê
û jixwe di hundurê hucreyê de em nermalavê bi girêdanên wê saz dikin (pergala meya mêvandar paqij dimîne)
bitcoind:/@[15:25] # pkg install bitcoin-daemon bitcoin-utils
bitcoind:/@[15:30] # sysrc bitcoind_enable=YES
bitcoind:/@[15:30] # service bitcoind start
Di qefesê de Bitcoin heye, lê em hewceyê nenasiyê ne ji ber ku em dixwazin bi rêya tora TOP ve bi hin qefesan ve girêbidin. Bi gelemperî, em plan dikin ku piraniya hucreyan bi nermalava gumanbar tenê bi navgînek proxy ve bimeşînin. Bi saya pf Hûn dikarin NAT-ê ji bo hin rêzek navnîşanên IP-yê li ser tora herêmî neçalak bikin, û destûr bidin NAT-ê tenê ji bo nodeya meya TOR. Ji ber vê yekê, her çend malware têkeve hucreyê jî, bi îhtîmalek mezin ew ê bi cîhana derve re têkilî neke, û heke wusa be, ew ê IP-ya servera me eşkere neke. Ji ber vê yekê, em şaneyek din ava dikin ku karûbarên "pêşvebirin" wekî karûbarek ".pîvaz" û wekî proxy ji bo gihîştina Internetnternetê ji şaneyên kesane re.
# 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
Ji bo guhdarîkirina li navnîşek herêmî destnîşan bike (ji bo hemî hucreyan heye)
SOCKSPort 192.168.0.2:9050
Ji bo bextewariya tam ji me re çi din lazim e? Erê, em ji bo tevna xwe karûbarek hewce ne, dibe ku ji yekê zêdetir. Werin em nginx-ê bidin destpêkirin, ku dê wekî berevajî-proxy tevbigere û li ser nûkirina sertîfîkayên Let's Encrypt tevbigere.
# cbsd jsconstruct-tui
# cbsd jstart nginx-rev
# jexec nginx-rev
nginx-rev:/@[15:47] # pkg install nginx py36-certbot
Û bi vî awayî me 150 MB girêdayîbûnê di qefesekê de bi cih kir. Û hoste hîn jî paqij e.
Ka em paşê vegerin ser sazkirina nginx-ê, pêdivî ye ku em du hucreyên din ji bo deriyê dravdana xwe li ser nodejs û rust û serîlêdanek malperê, ku ji ber hin sedeman di Apache û PHP-ê de ye, bilind bikin, û ya paşîn jî databasek MySQL hewce dike.
# 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
...û 380 MB pakêtên din hatine veqetandin
Dûv re, em serîlêdana xwe bi git dakêşin û dest pê dikin.
# cbsd jsconstruct-tui
# cbsd jstart webapp
# jexec webapp
webapp:/@[16:02] # pkg install mariadb104-server apache24 php74 mod_php74 php74-pdo_mysql
450 pakêtên MB. di qefesê de.
Li vir em bi riya SSH-ê rasterast gihîştina pêşdebiran didin hucreyê, ew ê her tiştî li wir bixwe bikin:
webapp:/@[16:02] # ee /etc/ssh/sshd_config
Port 2267 - porta SSH ya hucreyê bi her kêfî biguhezînin
webapp:/@[16:02] # sysrc sshd_enable=YES
webapp:/@[16:02] # service sshd start
Welê, karûbar dimeşe, ya ku dimîne ev e ku meriv qaîdeyê lê zêde bike pf firewall
Ka em bibînin ka hucreyên me çi IP hene û bi gelemperî "herêma meya herêmî" çawa xuya dike.
# 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û qaîdeyek lê zêde bike
# 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ê, ji ber ku em li vir in, bila em qaîdeyek ji bo reverse-proxy jî zêde bikin:
## 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
Belê, niha hinekî li ser bitcoins
Tiştê ku me heye ev e ku me serîlêdanek webê heye ku ji derve ve tê xuyang kirin û ew bi dergehê dravdana meya herêmî re diaxive. Naha pêdivî ye ku em jîngehek xebatê amade bikin da ku bi tora Bitcoin bixwe - node re têkilî daynin bitcoind ew tenê daemonek e ku kopiya herêmî ya blokê nûve dike. Ev daemon xwedan fonksiyona RPC û walletê ye, lê ji bo pêşkeftina serîlêdanê "wrapers" hêsantir hene. Ji bo destpêkê, me biryar da ku em bikin electrum walletek CLI ye. em ê wê ji bo bitcoinên xwe wekî "depoya sar" bikar bînin - bi gelemperî, ew bitcoinsên ku hewce ne ku "li derveyî" pergalê werin hilanîn û bi gelemperî ji her kesî dûr werin hilanîn. Di heman demê de GUI-yek wê jî heye, ji ber vê yekê em ê heman berîka xwe li ser xwe bikar bînin
laptopan. Heya nuha em ê Electrum bi pêşkêşkerên gelemperî bikar bînin, û paşê em ê wê di hucreyek din de bilind bikin ji bo ku bi tu kesî ve girêdayî nemîne.
# cbsd jsconstruct-tui
# cbsd jstart electrum
# jexec electrum
electrum:/@[8:45] # pkg install py36-electrum
700 MB nermalava din di qefesa me de
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 walletelectrum:/@[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"
}Niha me walletek çêkiriye.
wallet@electrum:/ % electrum-3.6 listaddresses
[
"18WEhbjvMLGRMfwudzUrUd25U5C7uZYkzE",
"14XHSejhxsZNDRtk4eFbqAX3L8rftzwQQU",
"1KQXaN8RXiCN1ne9iYngUWAr6KJ6d4pPas",
...
"1KeVcAwEYhk29qEyAfPwcBgF5mMMoy4qjw",
"18VaUuSeBr6T2GwpSHYF3XyNgLyLCt1SWk"
]wallet@electrum:/ % electrum-3.6 help
Ji me re on-zincîr Ji niha û pê ve tenê hejmarek sînordar dê karibin bi berîka xwe ve girêbidin. Ji bo ku gihandina vê hucreyê ji derve ve neyê vekirin, girêdanên bi SSH-ê dê bi TOP-ê (guhertoyek nemerkezî ya VPN) pêk werin. Em SSH-ê di hucreyê de dest pê dikin, lê pf.conf-a xwe li ser mêvandar nahêlin.
electrum:/@[9:00] # sysrc sshd_enable=YES
electrum:/@[9:00] # service sshd start
Naha em şaneyê bi gihîştina Înternetê ya berîka xwe vekin. Ka em wê navnîşek IP-ya ji cîhek din a jêrtorê ku ne NATed e, bidin. Pêşî em biguherînin /etc/pf.conf li ser mêvandar
# ee /etc/pf.conf
JAIL_IP_POOL="192.168.0.0/24" em wê biguherînin JAIL_IP_POOL="192.168.0.0/25", Ji ber vê yekê hemî navnîşanên 192.168.0.126-255 dê rasterast negihîjin Înternetê. Cûreyek nermalava torê "air-gap". Û qaîdeya NAT wekî xwe dimîne
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
Zêdebarkirina qaîdeyên
# pfctl -f /etc/pf.conf
Niha em werin ser hucreya xwe
# 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.200Hmm, lê niha pergal bixwe dê ji bo me bixebite. Lêbelê, em dikarin proxyek pergalê diyar bikin. Lê tiştek heye, li ser TOR ew proxyek SOCKS5 e, û ji bo rehetiyê em jî proxyek HTTP dixwazin.
# cbsd jsconstruct-tui
# cbsd jstart polipo
# jexec polipo
polipo:/@[9:28] # pkg install polipo
polipo:/@[9:28] # ee /usr/local/etc/polipo/config
socksParentProxy = "192.168.0.2:9050"
socksProxyType = socks5polipo:/@[9:42] # sysrc polipo_enable=YES
polipo:/@[9:43] # service polipo start
Welê, naha di pergala me de du serverên proxy hene, û her du jî bi TOR-ê derdikevin: socks5://192.168.0.2:9050 û
Naha em dikarin jîngeha berîka xwe mîheng bikin
# 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:8123Welê, naha şêl dê ji bin proxyek bixebite. Ger em dixwazin pakêtan saz bikin, wê hingê divê em lê zêde bikin /usr/local/etc/pkg.conf ji bin koka qefesê
pkg_env: {
http_proxy: "http://my_proxy_ip:8123",
}Welê, naha ew dem e ku em karûbarê veşartî TOR wekî navnîşana karûbarê meya SSH di hucreya walletê de zêde bikin.
# jexec tor
tor:/@[9:59] # ee /usr/local/etc/tor/torrc
HiddenServiceDir /var/db/tor/electrum/
HiddenServicePort 22 192.168.0.200:22tor:/@[10:01] # mkdir /var/db/tor/electrum
tor:/@[10:01] # chown -R _tor:_tor /var/db/tor/electrum
tor:/@[10:01] # chmod 700 /var/db/tor/electrum
tor:/@[10:03] # service tor restart
tor:/@[10:04] # cat /var/db/tor/electrum/hostname
mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onionEv navnîşana girêdana me ye. Ka em ji makîneya herêmî kontrol bikin. Lê pêşî divê em mifteya SSH-ya xwe zêde bikin:
wallet@electrum:/ % mkdir ~/.ssh
wallet@electrum:/ % ee ~/.ssh/authorized_keys
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAG9Fk2Lqi4GQ8EXZrsH3EgSrVIQPQaAlS38MmJLBabihv9KHIDGXH7r018hxqLNNGbaJWO/wrWk7sG4T0yLHAbdQAFsMYof9kjoyuG56z0XZ8qaD/X/AjrhLMsIoBbUNj0AzxjKNlPJL4NbHsFwbmxGulKS0PdAD5oLcTQi/VnNdU7iFw== user@localWelê, ji makîneyek xerîdar a 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
Werin em girêdan (Ji bo ku ev bixebite, hûn hewceyê demonek TOR ya herêmî ye ku li 9050 guhdarî dike)
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 <genesis@istar.ca>
wallet@electrum:~ % logout
Serketinî!
Ji bo ku em bi dravdanên tavil û mîkro re bixebitin, ji me re girêkek jî hewce ye , bi rastî, ev ê bi Bitcoin re amûra xebata meya sereke be. U*ya ku em ê wekî daemon bikar bînin ev e , ku navbeynkariya HTTP (REST) ya bêkêmasî ye û dihêle hûn hem bi danûstendinên derveyî zincîre û hem jî bi zincîreyê re bixebitin. c-lightning ji bo xebatê pêwîst e bitcoind lê belê.
*Di zimanên cihê de pêkanînên cihêreng ên protokola Torgiloka Lightning hene. Ji yên ku me ceriband, c-lightning (bi C hatî nivîsandin) ya herî sabît û jêhatî-çavkaniyê xuya bû.
# 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
Dema ku her tiştê pêwîst tê berhev kirin û saz kirin, em ji bo bikarhênerek RPC biafirînin 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/32bitcoind:/@[10:39] # service bitcoind restart
Ger hûn amûrê binihêrin veguherîna min a kaotîk di navbera hucreyan de ew qas ne kaotîk derdikeve holê tmux, ku destûrê dide te ku hûn di yek danişînê de gelek bin-danişînên termînalê biafirînin. Analog: screen

Ji ber vê yekê, em naxwazin IP-ya rastîn a nodeya xwe eşkere bikin, û em dixwazin hemî danûstendinên darayî bi TOP-ê re bikin. Ji ber vê yekê, .pîvazek din ne hewce ye.
# jexec tor
tor:/@[9:59] # ee /usr/local/etc/tor/torrc
HiddenServiceDir /var/db/tor/cln/
HiddenServicePort 9735 192.168.0.7:9735tor:/@[10:01] # mkdir /var/db/tor/cln
tor:/@[10:01] # chown -R _tor:_tor /var/db/tor/cln
tor:/@[10:01] # chmod 700 /var/db/tor/cln
tor:/@[10:03] # service tor restart
tor:/@[10:04] # cat /var/db/tor/cln/hostname
en5wbkavnytti334jc5uzaudkansypfs6aguv6kech4hbzpcz2ove3yd.onionNaha em konfigurasyonek ji bo c-lightning biafirînin
lightning:/home/lightning/lightning@[10:31] # su lightning
lightning@lightning:~ % mkdir .lightning
lightning@lightning:~ % ee .lightning/config
alias=My-LN-Node
bind-addr=192.168.0.7:9735
rgb=ff0000
announce-addr=en5wbkavnytti334jc5uzaudkansypfs6aguv6kech4hbzpcz2ove3yd.onion:9735
network=bitcoin
log-level=info
fee-base=0
fee-per-satoshi=1
proxy=192.168.0.2:9050
log-file=/home/lightning/.lightning/c-lightning.log
min-capacity-sat=200000
# sparko plugin
# https://github.com/fiatjaf/lightningd-gjson-rpc/tree/master/cmd/sparko
sparko-host=192.168.0.7
sparko-port=9737
sparko-tls-path=sparko-tls
#sparko-login=mywalletusername:mywalletpassword
#sparko-keys=masterkey;secretread:+listchannels,+listnodes;secretwrite:+invoice,+listinvoices,+delinvoice,+decodepay,+waitpay,+waitinvoice
sparko-keys=masterkey;secretread:+listchannels,+listnodes;ultrawrite:+invoice,+listinvoices,+delinvoice,+decodepay,+waitpay,+waitinvoice
# for the example above the initialization logs (mixed with lightningd logs) should print something likelightning@lightning:~ % mkdir .lightning/plugins
lightning@lightning:~ % cd .lightning/plugins/
lightning@lightning:~/.lightning/plugins:% fetch https://github.com/fiatjaf/sparko/releases/download/v0.2.1/sparko_full_freebsd_amd64
lightning@lightning:~/.lightning/plugins % mkdir ~/.lightning/sparko-tls
lightning@lightning:~/.lightning/sparko-tls % cd ~/.lightning/sparko-tls
lightning@lightning:~/.lightning/sparko-tls % openssl genrsa -out key.pem 2048
lightning@lightning:~/.lightning/sparko-tls % openssl req -new -x509 -sha256 -key key.pem -out cert.pem -days 3650
lightning@lightning:~/.lightning/plugins % chmod +x sparko_full_freebsd_amd64
lightning@lightning:~/.lightning/plugins % mv sparko_full_freebsd_amd64 sparko
lightning@lightning:~/.lightning/plugins % cd ~
her weha hûn hewce ne ku ji bo bitcoin-cli pelê veavakirinê biafirînin, amûrek ku pê re têkilî daynin. bitcoind
lightning@lightning:~ % mkdir .bitcoin
lightning@lightning:~ % ee .bitcoin/bitcoin.conf
rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=testkontrolkirin
lightning@lightning:~ % bitcoin-cli echo "test"
[
"test"
]destpêkirin lightningd
lightning@lightning:~ % lightningd --daemon
Xwe lightningd hûn dikarin karûbar kontrol bikin lightning-cli, wek nimûne:
lightning-cli newaddr ji bo dravdana nû ya hatî navnîşê bistînin
{
"address": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv",
"bech32": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv"
}lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all hemî pereyên di berîka xwe de bişînin navnîşanê (hemî navnîşanên li ser zincîrê)
Di heman demê de ji bo operasyonên derveyî zincîrê jî ferman dide lightning-cli invoice, lightning-cli listinvoices, lightning-cli pay û vî awayî
Welê, ji bo danûstendina bi serîlêdanê re me REST Api heye
curl -k https://192.168.0.7:9737/rpc -d '{"method": "pay", "params": ["lnbc..."]}' -H 'X-Access masterkey'
Bila encama encam bikin
# 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
Me komek konteyneran heye, her yek bi asta xwe ya gihîştina hem ji û hem jî ji tora herêmî re.
# 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-dataWekî ku hûn dikarin bibînin, bitcoind hemî 190 GB cîh digire. Ger ji bo ceribandinê pêdivî bi nodek din hebe? Li vir ZFS bi kêr tê. Bi alîkarî cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com hûn dikarin wêneyek biafirînin û şaneyek nû bi vê wêneyê ve girêdin. Dê hucreya nû cîhê xwe hebe, lê tenê cûdahiya di navbera rewşa heyî û ya orîjînal de dê di pergala pelan de were hesibandin (em ê bi kêmî ve 190 GB hilînin)
Her şaneyek daneya ZFS-ya xweya cihê ye, û ev zehf hêsan e. gelek tiştên din ên xweş bikin, mîna şandina wêneyan bi SSH. Em ê rave nekin, jixwe gelek tişt hene.
Di heman demê de hêjayî gotinê ye ku hewcedariya çavdêriya dûr a mêvandar, ji bo van mebestên me hene .
B - ewlehî
Di derbarê ewlehiyê de, em ji prensîbên sereke yên di çarçoveya binesaziyê de dest pê bikin:
Veşarî - Amûrên standard ên pergalên mîna UNIX-ê vê prensîbê piştrast dikin. Em bi mantiqî gihîştina her hêmanek mentiqî ya pergalê - hucreyek ji hev vediqetînin. Gihîştin bi erêkirina standard a bikarhêner bi karanîna mifteyên kesane yên bikarhêneran ve tê peyda kirin. Hemî danûstendina di navbera û heya hucreyên dawî de bi rengek şîfrekirî pêk tê. Spas ji şîfrekirina dîskê, dema ku dîskek biguhezînin an koçî serverek din bikin, ne hewce ye ku em ji ewlehiya daneyê xeman bikin. Tenê gihîştina krîtîk gihîştina pergala mêvandar e, ji ber ku gihîştina wusa bi gelemperî gihîştina daneyên hundurê konteyneran peyda dike.
Linavketinî “Pêkanîna vê prensîbê di çend astên cuda de pêk tê. Pêşîn, girîng e ku were zanîn ku di mijara hardware ya serverê de, bîranîna ECC, ZFS jixwe "derveyî qutikê" di asta bitsên agahdariyê de yekbûna daneyê digire. Wêneyên tavilê dihêlin ku hûn di her kêliyê de paşvekêşan çêbikin. Amûrên hinarde/îtxalkirina hucreyê rehet dubarekirina hucreyê hêsan dike.
Hilbijartinê - Ev jixwe vebijarkî ye. Bi asta navdariya we û rastiya ku hûn nefretkar in ve girêdayî ye. Di mînaka xwe de, me piştrast kir ku berîka bi taybetî ji tora TOP-ê tê gihîştin. Ger hewce be, hûn dikarin her tiştî li ser dîwarê dîwarê asteng bikin û bihêlin ku gihîştina serverê bi taybetî bi tunelan (TOR an VPN mijarek din e). Bi vî rengî, server dê bi qasî ku gengaz be ji cîhana derve were qut kirin, û tenê em bixwe dê karibin bandorê li hebûna wê bikin.
Nemimkûniya redkirinê - Û ev bi operasyonên din ve girêdayî ye û bi polîtîkayên rast ên ji bo mafên bikarhêner, gihîştin, û hwd ve girêdayî ye. Lê bi nêzîkatiya rast, hemî kiryarên bikarhêner têne kontrol kirin, û bi saya çareseriyên krîptografî gengaz e ku meriv bi eşkereyî nas bike ka kê hin kiryar û kengê kiriye.
Bê guman, veavakirina diyarkirî ne mînakek bêkêmasî ye ku divê ew her gav çawa be, ew yek mînakek e ku meriv çawa dikare bibe, di heman demê de kapasîteyên pîvan û xwerûkirina pir maqûl digire.
Li ser virtualbûna tevahî çi ye?
Di derbarê virtualbûna tevahî de hûn dikarin bi karanîna cbsd-ê bikar bînin . Ez ê tenê ji bo xebatê lê zêde bikim bhyve Hûn hewce ne ku hin vebijarkên kernel çalak bikin.
# cat /etc/rc.conf
...
kld_list="vmm if_tap if_bridge nmdm"
...# cat /boot/loader.conf
...
vmm_load="YES"
...Ji ber vê yekê heke hûn ji nişkê ve hewce ne ku dokerek dest pê bikin, wê hingê hin debian saz bikin û biçin!

Navê pêger
Ez texmîn dikim ku tenê min dixwest ez parve bikim ev e. Ger we gotar jê hez kir, wê hingê hûn dikarin ji min re çend bitcoin bişînin - . Heke hûn dixwazin di çalakiyê de hucreyan biceribînin û hin bitcoin hebin, hûn dikarin biçin min .
Source: www.habr.com
