Ошентип, кесибим боюнча мен компьютердик системалардын жана тармактардын администраторумун (кыскасы: системалык администратор) жана 10 жылдан бир аз ашык убакыт бою проф. ар кандай системалардын иш-аракеттери, анын ичинде [өтө] коопсуздук чараларын талап кылган системалар. Бир нече убакыт мурун мага кызыктуу болгон окуя да болду dev
, Ошентип, мен өтүп бара жаттым). Бирок мен өнүгүү жөнүндө эмес, тиркемелер үчүн коопсуз жана эффективдүү чөйрө жөнүндө айтып жатам.
Финансылык технология (fintech) маалыматтык коопсуздуктун жанына өтүңүз (infosec) жана биринчиси экинчисиз иштей алат, бирок көпкө эмес. Ошондуктан мен өзүмдүн тажрыйбам менен бөлүшкүм келет жана мен колдонгон куралдардын жыйындысы, ал экөөнү тең камтыйт fintechжана infosec, жана ошол эле учурда, ошондой эле кененирээк же такыр башка максатта колдонулушу мүмкүн. Бул макалада мен сизге Биткойн жөнүндө көп эмес, каржылык (жана гана эмес) кызматтарды өнүктүрүү жана иштетүү үчүн инфраструктуралык модель жөнүндө айтып берем - бир сөз менен айтканда, "В" маанилүү болгон кызматтар. Бул Bitcoin биржасына да, Bitcoin менен эч кандай байланышы жок чакан компаниянын эң типтүү корпоративдик зоопаркына да тиешелүү.
Мен принциптердин жактоочусу экенимди белгилегим келет "акылсыз жөнөкөй" и "аз көбүрөөк", ошондуктан, макала да, анда сүрөттөлгөн нерсе да бул принциптер жөнүндө болгон касиеттерге ээ болот.
Ойдон чыгарылган сценарий: Келгиле, биткойндор алмаштыргычтын мисалында баарын карап көрөлү. Биз рублди, долларды, еврону биткойндорго жана кайра алмаштырууну баштоону чечтик, бизде буга чейин жумушчу чечим бар, бирок qiwi жана webmoney сыяктуу башка санариптик акчалар үчүн, б.а. Биз бардык юридикалык маселелерди жаптык, бизде рубль, доллар жана евро жана башка төлөм системалары үчүн төлөм шлюзи катары кызмат кылган даяр тиркеме бар. Ал биздин банк эсептерибизге туташтырылган жана акыркы колдонмолорубуз үчүн кандайдыр бир API бар. Бизде ошондой эле колдонуучулар үчүн алмаштыргычтын ролун аткарган веб-тиркеме бар, ошондой эле, кадимки qiwi же webmoney эсеби сыяктуу - каттоо эсебин түзүү, картаны кошуу жана башкалар. Бул жергиликтүү аймакта REST API аркылуу болсо да, биздин шлюз колдонмосу менен байланышат. Ошентип, биз биткойндорду бириктирип, ошол эле учурда инфраструктураны жаңыртууну чечтик, анткени... Башында бардыгы шашылыш түрдө столдун астындагы кеңседеги виртуалдык кутуларга коюлду... сайт колдонула баштады, биз иштөө убактысы жана иштеши жөнүндө тынчсыздана баштадык.
Ошентип, негизги нерседен баштайлы - серверди тандоо. Анткени биздин мисалдагы бизнес кичинекей жана биз тандай турган хосттерге (OVH) ишенебиз
Сервер орнотуу
Бул жерде баары жөнөкөй. Биз муктаждыктарыбызга ылайыктуу аппаратураны тандайбыз. Андан кийин FreeBSD сүрөтүн тандаңыз. Мейли, же биз IPMI аркылуу же монитор аркылуу (башка хосттерде жана өзүбүздүн аппараттык жабдыкта) туташтырабыз жана .iso FreeBSD сүрөтүн жүктөп алуу үчүн киргизебиз. Оркестрдик орнотуу үчүн мен колдоном
Системаны орнотуу стандарттуу жол менен ишке ашат, мен бул жөнүндө токтолбойм, мен жөн гана белгилей кетейин, иштей баштоодон мурун ага көңүл буруш керек. катууланткандыктан ал сунуш кылган параметрлер bsdinstaller
орнотуунун аягында (эгерде сиз системаны өзүңүз орнотсоңуз):
бар
Ошондой эле орнотулган системада жогоруда айтылган параметрлерди иштетүүгө болот. Бул үчүн, жүктөгүч файлын түзөтүп, ядронун параметрлерин иштетишиңиз керек. *ee 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
Ошондой эле сизде тутумдун акыркы версиясы орнотулганына ынануу керек жана
Андан кийин конфигурациялайбыз aide
, системанын конфигурация файлдарынын абалын көзөмөлдөө. Сиз кененирээк окуй аласыз
pkg install aide
жана 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
бурулуш
sysrc auditd_enable=YES
# service auditd start
Бул маселени кантип башкаруу эң сонун сүрөттөлгөн
Эми биз кайра жүктөйбүз жана сервердеги программалык камсыздоого өтөбүз. Ар бир сервер контейнерлер же толук виртуалдык машиналар үчүн гипервизор. Ошондуктан, эгерде биз толук виртуалдаштырууну колдонууну пландаштырсак, процессор VT-x жана EPT колдошу маанилүү.
Контейнерлерди жана виртуалдык машиналарды башкаруу үчүн мен колдоном
Контейнерлер? Докер кайра же эмне?
Бирок жок. cbsd
клеткалар деп аталган бул контейнерлерди уюштуруу үчүн.
Кафес ар кандай максаттар үчүн инфраструктураны куруу үчүн өтө эффективдүү чечим болуп саналат, мында жеке кызматтарды же процесстерди толук изоляциялоо талап кылынат. Негизи, бул хост системасынын клону, бирок ал толук жабдык виртуалдаштырууну талап кылбайт. Мунун аркасында ресурстар "конок OS" үчүн эмес, аткарылып жаткан ишке гана жумшалат. Клеткалар ички муктаждыктар үчүн колдонулганда, бул ресурстарды оптималдуу пайдалануу үчүн абдан ыңгайлуу чечим болуп саналат - бир аппараттык сервердеги клеткалардын тобу, эгерде зарыл болсо, ар бири өзүнчө бүт сервер ресурсун колдоно алат. Адатта, ар кандай субкызматтар кошумча керек экенин эске алып. ресурстарды ар кайсы убакта колдонсоңуз, серверлердин ортосундагы клеткаларды туура пландап, тең салмактап койсоңуз, бир серверден максималдуу өндүрүмдүүлүктү ала аласыз. Зарыл болсо, клеткаларга колдонулган ресурс боюнча чектөөлөр да берилиши мүмкүн.
Толук виртуалдаштыруу жөнүндө эмне айтууга болот?
Менин билишимче, ошондой эле, cbsd
ишин колдойт bhyve
жана XEN гипервизорлору. Мен экинчисин эч качан колдонгон эмесмин, бирок биринчиси салыштырмалуу жаңы bhyve
төмөнкү мисалда.
Хост чөйрөсүн орнотуу жана конфигурациялоо
Биз FS колдонобуз
gpart add -t freebsd-zfs /dev/ada0
/dev/ada0p4 added!
калган орунга диск бөлүгүн кошуу
geli init /dev/ada0p4
биздин шифрлөө сырсөзүн киргизиңиз
geli attach /dev/ada0p4
Биз сырсөздү кайра киргизебиз жана бизде /dev/ada0p4.eli түзмөгү бар - бул биздин шифрленген мейкиндик. Андан кийин биз /dev/ada1 жана массивдеги калган дисктер үчүн да кайталайбыз. Жана биз жаңысын түзөбүз
zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli
- Ооба, бизде минималдуу согуштук комплект даяр. Үчөөнүн бири иштебей калса, дисктердин чагылдырылган массивдери.
Жаңы "бассейнде" маалымат топтомун түзүү
zfs create vms/jails
pkg install cbsd
— команданы ишке киргиздик жана ячейкаларыбызга башкарууну орноттук.
Андан кийин cbsd
орнотулган болсо, аны инициализациялоо керек:
# env workdir="/vms/jails" /usr/local/cbsd/sudoexec/initenv
Ооба, биз бир топ суроолорго жооп беребиз, көбүнчө демейки жооптор менен.
*Эгер сиз шифрлөөнү колдонуп жатсаңыз, демондун иштеши маанилүү cbsdd
дисктерди кол менен же автоматтык түрдө чечмейинче автоматтык түрдө башталбайт (биздин мисалда муну zabbix аткарат)
** Мен дагы NAT колдонбойм cbsd
, жана мен аны өзүм конфигурациялайм 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
Брандмауэр саясаттарын орнотуу да өзүнчө тема, андыктан мен БААРЫН БЛОКТОО саясатын жана ак тизмелерди орнотууга тереңдеп кирбейм, муну окуу менен кылсаңыз болот
Мейли... бизде cbsd орнотулду, биздин биринчи жумушчу күчүбүздү - капаска салынган Bitcoin жинди түзүүгө убакыт келди!
cbsd jconstruct-tui
Бул жерде биз клетка түзүү диалогун көрөбүз. Бардык баалуулуктар коюлгандан кийин, келгиле, түзөлү!
Биринчи уячаңызды түзүп жатканда, клеткалар үчүн негиз катары эмнени колдонууну тандаңыз. Мен буйрук менен FreeBSD репозиторийинен бөлүштүрүүнү тандайм repo
. Бул тандоо белгилүү бир версиянын биринчи уячасын түзүүдө гана жасалат (сиз хост версиясынан эски каалаган версиянын клеткаларын жайгаштырсаңыз болот).
Баары орнотулгандан кийин, биз капастаны ишке киргизебиз!
# cbsd jstart bitcoind
Бирок биз капаска программалык камсыздоону орнотуу керек.
# jls
JID IP Address Hostname Path
1 192.168.0.1 bitcoind.space.com /zroot/jails/jails/bitcoind
jexec bitcoind
клетка консолуна кирүү үчүн
жана уячанын ичинде биз программалык камсыздоону анын көз карандылыгы менен орнотобуз (биздин хост системасы таза бойдон калууда)
bitcoind:/@[15:25] # pkg install bitcoin-daemon bitcoin-utils
bitcoind:/@[15:30] # sysrc bitcoind_enable=YES
bitcoind:/@[15:30] # service bitcoind start
капаска Bitcoin бар, бирок биз TOP тармагы аркылуу кээ бир клеткаларга туташуу келет, анткени анонимдүүлүк керек. Жалпысынан биз шектүү программалык камсыздоо менен көпчүлүк клеткаларды прокси аркылуу гана иштетүүнү пландап жатабыз. Рахмат pf
Сиз жергиликтүү тармактагы IP даректердин белгилүү бир диапазону үчүн NATти өчүрө аласыз жана NAT биздин TOR түйүнү үчүн гана уруксат бере аласыз. Ошентип, зыяндуу программа клеткага кирип кетсе да, ал сырткы дүйнө менен байланышпай калат, ал эми эгер байланышса, серверибиздин IP дарегин ачпай калат. Ошондуктан, биз ".onion" кызматы катары жана жеке уячаларга Интернетке кирүү үчүн прокси катары кызматтарды "алдыга" алуу үчүн дагы бир клетканы түзөбүз.
# 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
Жергиликтүү даректе угууга коюу (бардык клеткалар үчүн жеткиликтүү)
SOCKSPort 192.168.0.2:9050
Толук бакыт үчүн дагы эмне керек? Ооба, бизге желе үчүн кызмат керек, балким, бирден көп. Келгиле, nginxти ишке киргизели, ал тескери прокси катары иштейт жана Let's Encrypt сертификаттарын жаңыртуу менен алектенет.
# cbsd jsconstruct-tui
# cbsd jstart nginx-rev
# jexec nginx-rev
nginx-rev:/@[15:47] # pkg install nginx py36-certbot
Ошентип, биз капаска 150 Мб көз карандылыкты койдук. Ал эми үй ээси дагы деле таза.
Келгиле, nginxти орнотууга кийинчерээк кайрылып көрөлү, nodejs жана rust жана веб-тиркемедеги төлөм шлюзу үчүн дагы эки уячаны көтөрүшүбүз керек, ал эмнегедир Apache жана PHPде, ал эми акыркысы да 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
...жана дагы 380 МБ топтомдор обочолонгон
Андан кийин, биз git менен тиркемени жүктөп алып, аны ишке киргизебиз.
# cbsd jsconstruct-tui
# cbsd jstart webapp
# jexec webapp
webapp:/@[16:02] # pkg install mariadb104-server apache24 php74 mod_php74 php74-pdo_mysql
450 МБ топтомдор. капаска.
Бул жерде биз иштеп чыгуучуга SSH аркылуу түздөн-түз клеткага кирүү мүмкүнчүлүгүн беребиз, алар ал жерде бардыгын өздөрү жасашат:
webapp:/@[16:02] # ee /etc/ssh/sshd_config
Port 2267
— клетканын SSH портун каалаган ыктыярдуу портко өзгөртүү
webapp:/@[16:02] # sysrc sshd_enable=YES
webapp:/@[16:02] # service sshd start
Кызмат иштеп жатат, эрежени кошуу гана калды pf
тармактык
Келгиле, биздин клеткалар кандай IP бар экенин жана биздин "жергиликтүү аймак" жалпысынан кандай экенин карап көрөлү.
# 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
жана эреже кошуу
# 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
Макул, биз бул жерде болгондуктан, тескери прокси үчүн эреже кошолу:
## 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
Ооба, азыр биткойндор жөнүндө бир аз
Бизде бар болгон нерсе, бизде тышкы таасирге ээ болгон веб-тиркеме бар жана ал биздин төлөм шлюзубуз менен жергиликтүү түрдө сүйлөшөт. түйүн - Эми биз Bitcoin тармак өзү менен өз ара аракеттенүү үчүн жумушчу чөйрөнү даярдоо керек bitcoind
бул блокчейндин жергиликтүү көчүрмөсүн жаңыртып турган жөн гана демон. Бул демон RPC жана капчык функционалдуулугуна ээ, бирок тиркемени иштеп чыгуу үчүн ыңгайлуураак "ороочулар" бар. Баштоо үчүн, биз коюуну чечтик electrum
CLI капчыгы болуп саналат.
ноутбуктар. Азырынча биз Электрумду коомдук серверлер менен колдонобуз, кийинчерээк аны башка уячада көтөрөбүз
# cbsd jsconstruct-tui
# cbsd jstart electrum
# jexec electrum
electrum:/@[8:45] # pkg install py36-electrum
биздин капаска дагы 700 МБ программалык камсыздоо
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"
}
Азыр бизде капчык түзүлдү.
wallet@electrum:/ % electrum-3.6 listaddresses
[
"18WEhbjvMLGRMfwudzUrUd25U5C7uZYkzE",
"14XHSejhxsZNDRtk4eFbqAX3L8rftzwQQU",
"1KQXaN8RXiCN1ne9iYngUWAr6KJ6d4pPas",
...
"1KeVcAwEYhk29qEyAfPwcBgF5mMMoy4qjw",
"18VaUuSeBr6T2GwpSHYF3XyNgLyLCt1SWk"
]
wallet@electrum:/ % electrum-3.6 help
Биздин боюнча чынжырчанын Мындан ары капчыкка чектелген сандагы адамдар гана кошула алат. Сырттан бул уячага кирүү мүмкүнчүлүгүн ачпоо үчүн, SSH аркылуу туташуулар TOP (VPNдин борбордон ажыратылган версиясы) аркылуу ишке ашат. Биз уячада SSHти ишке киргизебиз, бирок биздин pf.conf хостубузга тийбеңиз.
electrum:/@[9:00] # sysrc sshd_enable=YES
electrum:/@[9:00] # service sshd start
Эми капчыктын Интернетке кирүү мүмкүнчүлүгү бар клетканы өчүрөлү. Келгиле, ага NAT эмес башка субнет мейкиндигинен IP дарегин берели. Алгач өзгөрөлү /etc/pf.conf
хостто
# ee /etc/pf.conf
JAIL_IP_POOL="192.168.0.0/24"
аны өзгөртөлү JAIL_IP_POOL="192.168.0.0/25"
, Ошентип, 192.168.0.126-255 бардык даректери Интернетке түз кире албайт. Программалык камсыздоонун бир түрү "аба боштук" тармагынын. Ал эми NAT эрежеси мурдагыдай бойдон калууда
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
Эрежелерди ашыкча жүктөө
# pfctl -f /etc/pf.conf
Эми клеткабызды алалы
# 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
Ммм, бирок азыр системанын өзү биз үчүн иштебей калат. Бирок, биз системанын проксисин көрсөтө алабыз. Бирок бир нерсе бар, TORде бул SOCKS5 прокси, жана ыңгайлуулук үчүн биз 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
Эми биздин системада эки прокси сервер бар, экөө тең TOR аркылуу чыгат: socks5://192.168.0.2:9050 жана
Эми биз капчыкты чөйрөнү конфигурациялай алабыз
# 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
Ооба, азыр кабык прокси астында иштейт. Эгерде биз пакеттерди орнотууну кааласак, анда биз ага кошуубуз керек /usr/local/etc/pkg.conf
капастын тамырынын астынан
pkg_env: {
http_proxy: "http://my_proxy_ip:8123",
}
Эми TOR жашыруун кызматын капчык капаска биздин SSH кызматыбыздын дареги катары кошууга убакыт келди.
# 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
Бул биздин байланыш дареги. Жергиликтүү машинадан текшерип көрөлү. Бирок адегенде SSH ачкычыбызды кошушубуз керек:
wallet@electrum:/ % mkdir ~/.ssh
wallet@electrum:/ % ee ~/.ssh/authorized_keys
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAG9Fk2Lqi4GQ8EXZrsH3EgSrVIQPQaAlS38MmJLBabihv9KHIDGXH7r018hxqLNNGbaJWO/wrWk7sG4T0yLHAbdQAFsMYof9kjoyuG56z0XZ8qaD/X/AjrhLMsIoBbUNj0AzxjKNlPJL4NbHsFwbmxGulKS0PdAD5oLcTQi/VnNdU7iFw== user@local
Ооба, 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
Келиңиз байланышабыз (Мунун иштеши үчүн сизге 9050де угуучу жергиликтүү TOR демону керек)
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
Ийгилик!
Заматта жана микро-төлөмдөр менен иштөө үчүн бизге түйүн керек c-lightning
иштеши үчүн зарыл bitcoind
Бирок Ооба.
*Lightning Network протоколунун ар кандай тилдерде ар кандай ишке ашырылышы бар. Биз сынап көргөндөрдүн ичинен c-чагылган (С тилинде жазылган) эң туруктуу жана ресурсту үнөмдөөчүдөй көрүндү.
# 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
Керектүү нерселердин баары түзүлүп, орнотулуп жатканда, 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
Эгер сиз утилитаны белгилесеңиз, клеткалар арасында менин башаламан которулушум анчалык башаламан эмес болуп чыкты tmux
, бул бир сессиянын ичинде бир нече терминалдык суб-сессияларды түзүүгө мүмкүндүк берет. Аналогу: screen
Ошентип, биз түйүнүбүздүн чыныгы IP дарегин ачыкка чыгаргыбыз келбейт жана бардык финансылык операцияларды TOP аркылуу жүргүзгүбүз келет. Ошондуктан, дагы бир .пияз кереги жок.
# 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
Эми 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 ~
сиз ошондой эле биткоин-cli үчүн конфигурация файлын түзүшүңүз керек, бул утилита менен байланышат bitcoind
lightning@lightning:~ % mkdir .bitcoin
lightning@lightning:~ % ee .bitcoin/bitcoin.conf
rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=test
текшерүү
lightning@lightning:~ % bitcoin-cli echo "test"
[
"test"
]
ишке киргизүү lightningd
lightning@lightning:~ % lightningd --daemon
өзү lightningd
сиз утилитаны көзөмөлдөй аласыз lightning-cli
Мисалы:
lightning-cli newaddr
жаңы түшкөн төлөмдүн дарегин алуу
{
"address": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv",
"bech32": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv"
}
lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all
капчыктагы бардык акчаны дарекке жөнөтүү (бардык чынжырдагы даректер)
Ошондой эле чынжырдан тышкары операциялар үчүн буйруктар lightning-cli invoice
, lightning-cli listinvoices
, lightning-cli pay
жана башкалар.
Тиркеме менен байланышуу үчүн бизде REST Api бар
curl -k https://192.168.0.7:9737/rpc -d '{"method": "pay", "params": ["lnbc..."]}' -H 'X-Access masterkey'
Кыскасы
# 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
Бизде контейнерлердин топтому бар, алардын ар бири локалдык тармактан жана ага кирүү мүмкүнчүлүгүнө ээ.
# 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
Көрүнүп тургандай, bitcoind бардык 190 ГБ мейкиндикти ээлейт. Сыноо үчүн дагы бир түйүн керек болсочы? Бул жерде ZFS жардамга келет. Жардамы менен cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com
сиз сүрөттү түзүп, бул сүрөткө жаңы уячаны кошо аласыз. Жаңы уячанын өзүнүн мейкиндиги болот, бирок файл тутумунда учурдагы абал менен түпнуска ортосундагы айырма гана эске алынат (биз кеминде 190 ГБ үнөмдөйбүз)
Ар бир клетка өзүнчө ZFS маалымат топтому болуп саналат жана бул абдан ыңгайлуу.
Ошондой эле, бул максаттар үчүн бизде хосттун алыстан мониторинг жүргүзүү зарылдыгын белгилей кетүү керек
B - коопсуздук
Коопсуздукка келсек, инфраструктуранын контекстиндеги негизги принциптерден баштайлы:
купуялуулук - UNIX сыяктуу системалардын стандарттык куралдары бул принциптин ишке ашырылышын камсыз кылат. Биз системанын ар бир логикалык өзүнчө элементине - клеткага кирүү мүмкүнчүлүгүн логикалык жактан бөлөбүз. Кирүү колдонуучулардын жеке ачкычтарын колдонуу менен стандарттык колдонуучу аутентификациясы аркылуу камсыз кылынат. Клеткалардын ортосундагы жана акырына чейинки бардык байланыш шифрленген түрдө ишке ашат. Дискти шифрлөөнүн аркасында биз дискти алмаштырууда же башка серверге көчүүдө маалыматтардын коопсуздугу жөнүндө тынчсызданбайбыз. Жалгыз маанилүү жетүү бул хост тутумуна кирүү, анткени мындай жетүү жалпысынан контейнерлердин ичиндеги маалыматтарга жетүүнү камсыз кылат.
актык «Бул принципти ишке ашыруу бир нече ар кандай деңгээлде жүрөт. Биринчиден, сервердик жабдыктарда, ECC эс тутумунда, ZFS буга чейин "кутудан тышкары" маалымат биттеринин деңгээлинде маалыматтардын бүтүндүгүнө кам көрө тургандыгын белгилей кетүү маанилүү. Ыкчам сүрөттөр сизге каалаган убакта камдык көчүрмөлөрдү түзүүгө мүмкүндүк берет. Ыңгайлуу клетка экспорттоо/импорттоо куралдары клетканын репликациясын жөнөкөйлөтөт.
болушу - Бул мурунтан эле милдеттүү эмес. Атак-даңкыңыздын даражасына жана жек көрүүчүлөрүңүз бар экенине жараша болот. Биздин мисалда биз капчыкка TOP тармагынан гана жеткиликтүү болушун камсыз кылдык. Керек болсо, сиз брандмауэрдеги бардыгын жаап, серверге туннелдер аркылуу гана кирүүгө уруксат бере аласыз (TOR же VPN башка маселе). Ошентип, сервер мүмкүн болушунча тышкы дүйнөдөн ажыратылат жана анын жеткиликтүүлүгүнө өзүбүз гана таасир эте алабыз.
Баш тартуунун мүмкүн эместиги - Жана бул андан аркы иштөөгө жана колдонуучунун укуктарына туура саясатты сактоого, кирүү ж.б. көз каранды. Бирок туура мамиле менен колдонуучунун бардык аракеттери текшерилет жана криптографиялык чечимдердин аркасында белгилүү бир аракеттерди ким жана качан жасаганын так аныктоого болот.
Албетте, сүрөттөлгөн конфигурация ар дайым кандай болушу керек экендигинин абсолюттук мисалы эмес, бул өтө ийкемдүү масштабдоо жана ыңгайлаштыруу мүмкүнчүлүктөрүн сактап калуу менен, ал кандай болушу мүмкүн экендигинин бир мисалы.
Толук виртуалдаштыруу жөнүндө эмне айтууга болот?
Сиз cbsd аркылуу толук виртуалдаштыруу жөнүндө bhyve
Кээ бир ядро параметрлерин иштетишиңиз керек.
# cat /etc/rc.conf
...
kld_list="vmm if_tap if_bridge nmdm"
...
# cat /boot/loader.conf
...
vmm_load="YES"
...
Ошентип, сиз күтүлбөгөн жерден докерди баштооңуз керек болсо, анда Debian орнотуп, барыңыз!
Баары болду
Мен муну менен бөлүшкүм келди окшойт. Эгер сизге макала жакса, анда мага бир нече биткойндор жөнөтө аласыз -
Source: www.habr.com