Bitcoin อยู่ในกรงเหรอ?

มันเกิดขึ้นโดยอาชีพฉันเป็นผู้ดูแลระบบคอมพิวเตอร์และเครือข่าย (โดยย่อ: ผู้ดูแลระบบ) และฉันมีโอกาสบอกกับศาสตราจารย์ มานานกว่า 10 ปีเล็กน้อย กิจกรรมของระบบที่หลากหลาย รวมถึงกิจกรรมที่ต้องใช้มาตรการรักษาความปลอดภัย [ขั้นสูงสุด] มันเกิดขึ้นเมื่อไม่นานมานี้ฉันพบว่ามันน่าสนใจ bitcoinและไม่เพียงแต่ใช้เท่านั้น แต่ยังเปิดตัวไมโครเซอร์วิสหลายอย่างเพื่อเรียนรู้วิธีการทำงานอย่างอิสระกับเครือข่าย Bitcoin (หรือที่เรียกว่า p2p) จากมุมมองของนักพัฒนา (แน่นอนว่าฉันเป็นหนึ่งในนั้น devฉันก็เลยผ่านไป) แต่ฉันไม่ได้พูดถึงการพัฒนา ฉันกำลังพูดถึงสภาพแวดล้อมที่ปลอดภัยและมีประสิทธิภาพสำหรับแอปพลิเคชัน

เทคโนโลยีทางการเงิน (Fintech) ถัดจากความปลอดภัยของข้อมูล (อินโฟเซค) และอันแรกสามารถทำงานได้โดยไม่ต้องมีอันที่สอง แต่ไม่นาน นั่นเป็นเหตุผลที่ฉันต้องการแบ่งปันประสบการณ์และชุดเครื่องมือที่ฉันใช้ ซึ่งรวมถึงทั้งสองอย่าง Fintechและ อินโฟเซคและในเวลาเดียวกัน และยังสามารถใช้เพื่อวัตถุประสงค์ที่กว้างขึ้นหรือแตกต่างไปจากเดิมอย่างสิ้นเชิง ในบทความนี้ ฉันจะไม่บอกคุณมากนักเกี่ยวกับ Bitcoin แต่เกี่ยวกับโมเดลโครงสร้างพื้นฐานสำหรับการพัฒนาและการดำเนินงานของบริการทางการเงิน (และไม่เพียงเท่านั้น) กล่าวคือ บริการเหล่านั้นที่ "B" มีความสำคัญ สิ่งนี้ใช้ได้กับทั้งการแลกเปลี่ยน Bitcoin และสวนสัตว์ที่ให้บริการทั่วไปของบริษัทขนาดเล็กที่ไม่เกี่ยวข้องกับ Bitcoin แต่อย่างใด

ฉันอยากจะทราบว่าฉันเป็นผู้สนับสนุนหลักการ "ให้มันง่ายโง่" и "น้อยมาก"ดังนั้นทั้งบทความและสิ่งที่อธิบายไว้ในบทความจะมีคุณสมบัติตามหลักการเหล่านี้

สถานการณ์สมมติ: ลองดูทุกสิ่งโดยใช้ตัวอย่างของการแลกเปลี่ยน bitcoin เราตัดสินใจที่จะเปิดตัวการแลกเปลี่ยนรูเบิล ดอลลาร์ ยูโรสำหรับ bitcoins และกลับ และเรามีวิธีแก้ปัญหาที่ใช้งานได้อยู่แล้ว แต่สำหรับเงินดิจิทัลอื่น ๆ เช่น qiwi และ webmoney เช่น เราได้ปิดประเด็นทางกฎหมายทั้งหมดแล้ว เรามีแอปพลิเคชันสำเร็จรูปที่ทำหน้าที่เป็นเกตเวย์การชำระเงินสำหรับรูเบิล ดอลลาร์ และยูโร และระบบการชำระเงินอื่น ๆ มันเชื่อมต่อกับบัญชีธนาคารของเราและมี API บางประเภทสำหรับแอปพลิเคชันปลายทางของเรา นอกจากนี้เรายังมีเว็บแอปพลิเคชันที่ทำหน้าที่เป็นตัวแลกเปลี่ยนสำหรับผู้ใช้ เช่นเดียวกับบัญชี qiwi หรือ webmoney ทั่วไป - สร้างบัญชี เพิ่มบัตร และอื่นๆ โดยจะสื่อสารกับแอปพลิเคชันเกตเวย์ของเรา แม้ว่าจะผ่านทาง REST API ในพื้นที่ก็ตาม ดังนั้นเราจึงตัดสินใจเชื่อมต่อ bitcoin และในเวลาเดียวกันก็อัพเกรดโครงสร้างพื้นฐาน เพราะ... ในตอนแรก ทุกอย่างถูกวางไว้อย่างเร่งรีบบนกล่องเสมือนในสำนักงานใต้โต๊ะ... ไซต์เริ่มถูกใช้งาน และเราเริ่มกังวลเกี่ยวกับเวลาทำงานและประสิทธิภาพ

เริ่มจากสิ่งสำคัญกันก่อน - การเลือกเซิร์ฟเวอร์ เพราะ ธุรกิจในตัวอย่างของเรามีขนาดเล็กและเราไว้วางใจผู้ให้บริการโฮสต์ (OVH) ที่เราจะเลือก ตัวเลือกงบประมาณ โดยที่ไม่สามารถติดตั้งระบบจากอิมเมจ .iso ดั้งเดิมได้ แต่ไม่เป็นไร ฝ่ายรักษาความปลอดภัยไอทีจะวิเคราะห์อิมเมจที่ติดตั้งอย่างแน่นอน และเมื่อเราโตขึ้น โดยทั่วไปเราจะเช่าตู้เสื้อผ้าของตัวเองแบบมีกุญแจล็อค และมีการเข้าถึงทางกายภาพอย่างจำกัด และบางทีเราอาจจะสร้าง DC ของเราเองด้วย ไม่ว่าในกรณีใด ควรจำไว้ว่าเมื่อเช่าฮาร์ดแวร์และติดตั้งอิมเมจสำเร็จรูป มีโอกาสที่คุณจะมี “โทรจันจากโฮสต์” ค้างอยู่ในระบบของคุณ ซึ่งโดยส่วนใหญ่แล้วไม่ได้ตั้งใจจะสอดแนมคุณ แต่เพื่อเสนอเซิร์ฟเวอร์เครื่องมือการจัดการที่สะดวกยิ่งขึ้น

การติดตั้งเซิร์ฟเวอร์

ทุกอย่างเรียบง่ายที่นี่ เราเลือกฮาร์ดแวร์ที่เหมาะสมกับความต้องการของเรา จากนั้นเลือกอิมเมจ FreeBSD หรือเราเชื่อมต่อ (ในกรณีของโฮสต์อื่นและฮาร์ดแวร์ของเราเอง) ผ่าน IPMI หรือกับจอภาพและป้อนอิมเมจ .iso FreeBSD ลงในการดาวน์โหลด สำหรับการตั้งค่าออเคสตราฉันใช้ เบิ้ล и mfsbsd. สิ่งเดียวที่ในกรณีของเรากับคิมซูฟีคือเราเลือก การติดตั้งที่กำหนดเอง เพื่อให้ดิสก์ทั้งสองในมิเรอร์มีเพียงพาร์ติชันสำหรับบูตและ /home "เปิด" พื้นที่ดิสก์ที่เหลือจะถูกเข้ารหัส แต่จะเพิ่มเติมในภายหลัง

Bitcoin อยู่ในกรงเหรอ?

การติดตั้งระบบเกิดขึ้นในลักษณะมาตรฐานฉันจะไม่ยึดติดกับสิ่งนี้ฉันจะสังเกตเพียงว่าก่อนเริ่มดำเนินการควรให้ความสนใจ การทำให้แข็ง ตัวเลือกที่นำเสนอ bsdinstaller เมื่อสิ้นสุดการติดตั้ง (หากคุณติดตั้งระบบด้วยตัวเอง):

Bitcoin อยู่ในกรงเหรอ?

มี วัสดุที่ดี ในหัวข้อนี้ ผมจะกล่าวย้ำสั้นๆ ที่นี่

นอกจากนี้ยังสามารถเปิดใช้งานพารามิเตอร์ที่กล่าวมาข้างต้นบนระบบที่ติดตั้งไว้แล้วได้อีกด้วย ในการดำเนินการนี้ คุณจะต้องแก้ไขไฟล์ bootloader และเปิดใช้งานพารามิเตอร์เคอร์เนล *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

คุณควรตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งระบบเวอร์ชันล่าสุดแล้วและ ดำเนินการอัปเดตและอัปเกรดทั้งหมด. ตัวอย่างเช่น ในกรณีของเรา จำเป็นต้องอัปเกรดเป็นเวอร์ชันล่าสุด เนื่องจาก... อิมเมจก่อนการติดตั้งจะล่าช้าไปหกเดือนถึงหนึ่งปี ที่นั่นเราเปลี่ยนพอร์ต SSH เป็นสิ่งที่แตกต่างจากพอร์ตเริ่มต้น เพิ่มการรับรองความถูกต้องของคีย์ และปิดใช้งานการรับรองความถูกต้องของรหัสผ่าน

จากนั้นเราก็ตั้งค่า 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 หากเราวางแผนที่จะใช้การจำลองเสมือนเต็มรูปแบบ

ในการจัดการคอนเทนเนอร์และเครื่องเสมือนที่ฉันใช้ CBD จาก โอเลโวเลฉันขอให้เขามีสุขภาพที่ดีและได้รับพรสำหรับประโยชน์อันยอดเยี่ยมนี้!

ตู้คอนเทนเนอร์? นักเทียบท่าอีกครั้งหรืออะไร?

แต่ไม่มี. คุก FreeBSD เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการบรรจุหีบห่อ แต่ที่กล่าวถึง cbsd เพื่อประสานภาชนะเหล่านี้ซึ่งเรียกว่าเซลล์

กรงเป็นโซลูชันที่มีประสิทธิภาพอย่างยิ่งสำหรับการสร้างโครงสร้างพื้นฐานเพื่อวัตถุประสงค์ที่หลากหลาย ซึ่งท้ายที่สุดแล้วจำเป็นต้องแยกบริการหรือกระบวนการแต่ละรายการโดยสิ้นเชิง โดยพื้นฐานแล้ว มันเป็นโคลนของระบบโฮสต์ แต่ไม่ต้องการการจำลองเสมือนสำหรับฮาร์ดแวร์เต็มรูปแบบ และด้วยเหตุนี้ ทรัพยากรจึงไม่ถูกใช้ไปกับ "ระบบปฏิบัติการเกสต์" แต่จะใช้กับงานที่กำลังดำเนินการเท่านั้น เมื่อใช้เซลล์สำหรับความต้องการภายใน นี่เป็นโซลูชันที่สะดวกมากสำหรับการใช้ทรัพยากรที่เหมาะสมที่สุด - เซลล์จำนวนมากบนเซิร์ฟเวอร์ฮาร์ดแวร์ตัวเดียวสามารถใช้ทรัพยากรเซิร์ฟเวอร์ทั้งหมดทีละเซลล์ได้หากจำเป็น เมื่อพิจารณาว่าบริการย่อยที่แตกต่างกันมักจะต้องมีเพิ่มเติม ทรัพยากรในเวลาที่ต่างกัน คุณสามารถแยกประสิทธิภาพสูงสุดออกจากเซิร์ฟเวอร์เดียวได้ หากคุณวางแผนและปรับสมดุลเซลล์ระหว่างเซิร์ฟเวอร์อย่างเหมาะสม หากจำเป็น คุณสามารถกำหนดข้อจำกัดเกี่ยวกับทรัพยากรที่ใช้ให้กับเซลล์ได้

Bitcoin อยู่ในกรงเหรอ?

แล้วระบบเสมือนจริงเต็มรูปแบบล่ะ?

เท่าที่ฉันรู้ cbsd รองรับการทำงาน bhyve และไฮเปอร์ไวเซอร์ XEN ฉันไม่เคยใช้อันที่สอง แต่อันแรกค่อนข้างใหม่ ไฮเปอร์ไวเซอร์จาก FreeBSD. เราจะดูตัวอย่างการใช้งาน bhyve ในตัวอย่างด้านล่าง

การติดตั้งและกำหนดค่าสภาพแวดล้อมโฮสต์

เราใช้เอฟเอส ZFS. นี่เป็นเครื่องมือที่ทรงพลังอย่างยิ่งสำหรับการจัดการพื้นที่เซิร์ฟเวอร์ ด้วย ZFS คุณสามารถสร้างอาร์เรย์ของการกำหนดค่าต่างๆ จากดิสก์ได้โดยตรง ขยายพื้นที่ "ร้อน" แบบไดนามิก เปลี่ยนดิสก์ที่ไม่ทำงาน จัดการสแน็ปช็อต และอื่นๆ อีกมากมาย ซึ่งสามารถอธิบายได้ในบทความทั้งชุด กลับไปที่เซิร์ฟเวอร์และดิสก์ของเรา เมื่อเริ่มต้นการติดตั้งเราเหลือพื้นที่ว่างบนดิสก์สำหรับพาร์ติชันที่เข้ารหัส ทำไมเป็นอย่างนั้น? เพื่อให้ระบบกลับมาทำงานโดยอัตโนมัติและฟังผ่าน SSH

gpart add -t freebsd-zfs /dev/ada0

/dev/ada0p4 added!

เพิ่มพาร์ติชันดิสก์ลงในพื้นที่ที่เหลือ

geli init /dev/ada0p4

ป้อนรหัสผ่านการเข้ารหัสของเรา

geli attach /dev/ada0p4

เราป้อนรหัสผ่านอีกครั้งและเรามีอุปกรณ์ /dev/ada0p4.eli - นี่คือพื้นที่เข้ารหัสของเรา จากนั้นเราจะทำซ้ำแบบเดียวกันสำหรับ /dev/ada1 และดิสก์ที่เหลือในอาร์เรย์ และเราสร้างอันใหม่ พูล ZFS.

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

การตั้งค่านโยบายไฟร์วอลล์ก็เป็นอีกหัวข้อหนึ่ง ดังนั้นฉันจะไม่เจาะลึกในการตั้งค่านโยบาย BLOCK ALL และการตั้งค่าไวท์ลิสต์ คุณสามารถทำได้โดยการอ่าน เอกสารอย่างเป็นทางการ หรือบทความจำนวนมากใดๆ ที่มีอยู่ใน Google

เอาล่ะ... เราได้ติดตั้ง cbsd แล้ว ถึงเวลาสร้างเครื่องมือตัวแรกของเรา - ปีศาจ Bitcoin ในกรง!

cbsd jconstruct-tui

Bitcoin อยู่ในกรงเหรอ?

ที่นี่เราเห็นกล่องโต้ตอบการสร้างเซลล์ หลังจากตั้งค่าทั้งหมดแล้ว มาสร้างกัน!

เมื่อสร้างเซลล์แรก คุณควรเลือกสิ่งที่จะใช้เป็นฐานสำหรับเซลล์ ฉันเลือกการแจกจ่ายจากที่เก็บ 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 คุณสามารถปิดการใช้งาน NAT สำหรับช่วงที่อยู่ IP บางช่วงบนเครือข่ายท้องถิ่น และอนุญาต 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 ซึ่งจะทำหน้าที่เป็น Reverse-proxy และดูแลการต่ออายุใบรับรอง Let's Encrypt

# cbsd jsconstruct-tui

# cbsd jstart nginx-rev

# jexec nginx-rev

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

ดังนั้นเราจึงวางการพึ่งพา 150 MB ไว้ในกรง และเจ้าภาพก็ยังสะอาดอยู่

กลับไปที่การตั้งค่า nginx ในภายหลัง เราต้องเพิ่มเซลล์อีกสองเซลล์สำหรับเกตเวย์การชำระเงินของเราบน nodejs และสนิมและเว็บแอปพลิเคชัน ซึ่งด้วยเหตุผลบางอย่างอยู่ใน 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 MB ที่แยกได้

ต่อไปเราจะดาวน์โหลดแอปพลิเคชันของเราด้วย git และเปิดใช้งาน

# cbsd jsconstruct-tui

# cbsd jstart webapp

# jexec webapp

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

แพ็คเกจ 450 MB ในกรง

ที่นี่เราให้สิทธิ์นักพัฒนาเข้าถึงเซลล์โดยตรงผ่าน 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

เนื่องจากเราอยู่ที่นี่ เรามาเพิ่มกฎสำหรับ 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

ทีนี้มาเล็กน้อยเกี่ยวกับ bitcoins

สิ่งที่เรามีคือเรามีเว็บแอปพลิเคชันที่เปิดเผยจากภายนอกและสื่อสารกับเกตเวย์การชำระเงินของเราในเครื่อง ตอนนี้เราต้องเตรียมสภาพแวดล้อมการทำงานสำหรับการโต้ตอบกับเครือข่าย Bitcoin นั่นก็คือโหนด bitcoind มันเป็นเพียงภูตที่ช่วยรักษาสำเนาของบล็อคเชนในเครื่องให้ทันสมัยอยู่เสมอ Daemon นี้มีฟังก์ชัน RPC และกระเป๋าเงิน แต่มี "ตัวห่อ" ที่สะดวกกว่าสำหรับการพัฒนาแอปพลิเคชัน เริ่มต้นด้วยการตัดสินใจที่จะใส่ electrum เป็นกระเป๋าเงิน CLI กระเป๋าเงินใบนี้ เราจะใช้เป็น “ห้องเย็น” สำหรับบิตคอยน์ของเรา โดยทั่วไปแล้ว บิตคอยน์เหล่านั้นจะต้องถูกจัดเก็บ “นอก” ระบบที่ผู้ใช้สามารถเข้าถึงได้และโดยทั่วไปจะอยู่ห่างจากทุกคน นอกจากนี้ยังมี GUI ดังนั้นเราจะใช้กระเป๋าเงินเดียวกันกับของเรา
แล็ปท็อป สำหรับตอนนี้ เราจะใช้ Electrum กับเซิร์ฟเวอร์สาธารณะ และต่อมาเราจะเพิ่มมันลงในเซลล์อื่น อิเล็กตรัมเอ็กซ์เพื่อที่จะไม่ต้องพึ่งใครเลย

# cbsd jsconstruct-tui

# cbsd jstart electrum

# jexec electrum

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

ซอฟต์แวร์อีก 700 MB อยู่ในกรงของเรา

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

ตอนนี้เรามาปิดเซลล์ด้วยการเข้าถึงอินเทอร์เน็ตของกระเป๋าเงินกันดีกว่า ให้ที่อยู่ IP จากพื้นที่เครือข่ายย่อยอื่นที่ไม่ใช่ NATed กัน ก่อนอื่นเรามาเปลี่ยนกัน /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

Bitcoin อยู่ในกรงเหรอ?

Bitcoin อยู่ในกรงเหรอ?

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 และ http://192.168.0.6:8123

ตอนนี้เราสามารถกำหนดค่าสภาพแวดล้อมกระเป๋าสตางค์ของเราได้แล้ว

# 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

มาเชื่อมต่อกัน (เพื่อให้ใช้งานได้ คุณต้องมี TOR daemon ในเครื่องที่รับฟัง 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

ความสำเร็จ!

ในการทำงานกับการชำระเงินทันทีและการชำระเงินแบบไมโคร เรายังต้องมีโหนดด้วย Lightning Networkอันที่จริงแล้ว นี่จะเป็นเครื่องมือหลักในการทำงานของเรากับ Bitcoin ยู*c-ฟ้าผ่าซึ่งเราจะใช้เป็นภูตก็คือ ปลั๊กอิน Sparkoซึ่งเป็นอินเทอร์เฟซ HTTP (REST) ​​เต็มรูปแบบและช่วยให้คุณสามารถทำงานกับธุรกรรมทั้งแบบออฟไลน์และแบบออนไลน์ได้ c-lightning ที่จำเป็นสำหรับการทำงาน bitcoind แต่ใช่

*มีการใช้งานโปรโตคอล Lightning Network ที่แตกต่างกันในภาษาต่างๆ ในบรรดาสิ่งที่เราทดสอบ c-lightning (เขียนด้วยภาษา 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

Bitcoin อยู่ในกรงเหรอ?

ดังนั้นเราจึงไม่ต้องการเปิดเผย IP ที่แท้จริงของโหนดของเรา และเราต้องการดำเนินธุรกรรมทางการเงินทั้งหมดผ่าน TOP ดังนั้นจึงไม่จำเป็นต้องใช้ .onion อื่น

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

คุณต้องสร้างไฟล์กำหนดค่าสำหรับ bitcoin-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

Bitcoin อยู่ในกรงเหรอ?

เรามีชุดคอนเทนเนอร์ ซึ่งแต่ละชุดมีระดับการเข้าถึงของตัวเองทั้งจากและไปยังเครือข่ายท้องถิ่น

# 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 GB จะเกิดอะไรขึ้นถ้าเราต้องการโหนดอื่นสำหรับการทดสอบ? นี่คือจุดที่ ZFS มีประโยชน์ ด้วยความช่วยเหลือ cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com คุณสามารถสร้างสแน็ปช็อตและแนบเซลล์ใหม่เข้ากับสแน็ปช็อตนี้ได้ เซลล์ใหม่จะมีพื้นที่ของตัวเอง แต่ระบบไฟล์จะคำนึงถึงความแตกต่างระหว่างสถานะปัจจุบันและต้นฉบับเท่านั้น (เราจะบันทึกอย่างน้อย 190 GB)

แต่ละเซลล์จะมีชุดข้อมูล ZFS แยกกัน ซึ่งสะดวกมาก ZFS ยังอนุญาต ทำสิ่งเจ๋งๆ อื่นๆ เช่น การส่งสแนปช็อตผ่าน SSH เราจะไม่อธิบายมันมีมากมายอยู่แล้ว

นอกจากนี้ยังเป็นที่น่าสังเกตถึงความจำเป็นในการตรวจสอบโฮสต์ระยะไกลเพื่อจุดประสงค์เหล่านี้ที่เรามี Zabbix.

บี - ความปลอดภัย

ในส่วนของความปลอดภัย เริ่มจากหลักการสำคัญในบริบทของโครงสร้างพื้นฐานกันก่อน:

การรักษาความลับ - เครื่องมือมาตรฐานของระบบที่คล้ายกับ 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"
...

ดังนั้นหากคุณจำเป็นต้องเริ่มนักเทียบท่ากะทันหัน ให้ติดตั้งเดเบียนแล้วไปได้เลย!

Bitcoin อยู่ในกรงเหรอ?

นั่นคือทั้งหมด

ฉันเดาว่านั่นคือทั้งหมดที่ฉันต้องการแบ่งปัน หากคุณชอบบทความนี้ คุณสามารถส่ง bitcoins ให้ฉันได้บ้าง - bc1qu7lhf45xw83ddll5mnzte6ahju8ktkeu6qhttc. หากคุณต้องการลองใช้เซลล์จริงและมี bitcoin คุณสามารถไปที่ของฉัน โครงการสัตว์เลี้ยง.

ที่มา: will.com