ایک پنجرے میں بٹ کوائن؟

ایسا ہوا کہ پیشے کے لحاظ سے میں کمپیوٹر سسٹمز اور نیٹ ورکس کا ایڈمنسٹریٹر ہوں (مختصر طور پر: سسٹم ایڈمنسٹریٹر)، اور مجھے 10 سال سے کچھ زیادہ عرصے سے پروفیسر کو بتانے کا موقع ملا۔ نظام کی وسیع اقسام کی سرگرمیاں، بشمول وہ جو کہ [انتہائی] حفاظتی اقدامات کی ضرورت ہوتی ہے۔ ایسا بھی ہوا کہ کچھ عرصہ پہلے مجھے یہ دلچسپ لگا بٹ کوائن، اور نہ صرف اس کا استعمال کیا بلکہ متعدد مائیکرو سروسز بھی شروع کیں تاکہ یہ سیکھنے کے لیے کہ بٹ کوائن نیٹ ورک کے ساتھ آزادانہ طور پر کیسے کام کرنا ہے (عرف p2p) ایک ڈویلپر کے نقطہ نظر سے (میں یقیناً ان میں سے ایک ہوں۔ devتو میں وہاں سے گزر رہا تھا)۔ لیکن میں ترقی کے بارے میں بات نہیں کر رہا ہوں، میں ایپلی کیشنز کے لیے ایک محفوظ اور موثر ماحول کی بات کر رہا ہوں۔

مالیاتی ٹیکنالوجی (فن ٹیک) انفارمیشن سیکیورٹی کے آگے جائیں (infosec) اور پہلا دوسرے کے بغیر کام کر سکتا ہے، لیکن زیادہ دیر تک نہیں۔ اس لیے میں اپنے تجربے اور ان ٹولز کے سیٹ کا اشتراک کرنا چاہتا ہوں جو میں استعمال کرتا ہوں، جس میں دونوں شامل ہیں۔ فن ٹیکاور infosec، اور ایک ہی وقت میں، اور ایک وسیع تر یا مکمل طور پر مختلف مقصد کے لیے بھی استعمال کیا جا سکتا ہے۔ اس آرٹیکل میں میں آپ کو بٹ کوائن کے بارے میں زیادہ نہیں بلکہ مالیاتی (اور نہ صرف) خدمات کی ترقی اور آپریشن کے بنیادی ڈھانچے کے ماڈل کے بارے میں بتاؤں گا - ایک لفظ میں، وہ خدمات جہاں "B" اہمیت رکھتی ہے۔ یہ بٹ کوائن ایکسچینج دونوں پر لاگو ہوتا ہے اور ایک چھوٹی کمپنی کی خدمات کے سب سے عام کارپوریٹ زو پر جو کسی بھی طرح سے بٹ کوائن سے منسلک نہیں ہے۔

میں نوٹ کرنا چاہوں گا کہ میں اصولوں کا حامی ہوں۔ "اسے سادہ رکھیں" и "کم زیادہ ہے"لہذا، مضمون اور اس میں جو کچھ بیان کیا گیا ہے، دونوں میں وہ خصوصیات ہوں گی جن کے بارے میں یہ اصول ہیں۔

خیالی منظر نامہ: آئیے بٹ کوائن ایکسچینجر کی مثال کا استعمال کرتے ہوئے ہر چیز کو دیکھیں۔ ہم نے بٹ کوائنز اور بیک کے لیے روبل، ڈالر، یورو کا تبادلہ شروع کرنے کا فیصلہ کیا، اور ہمارے پاس پہلے سے ہی کام کرنے کا حل موجود ہے، لیکن دیگر ڈیجیٹل پیسے جیسے کیوی اور ویب منی کے لیے، یعنی ہم نے تمام قانونی مسائل کو بند کر دیا ہے، ہمارے پاس ایک ریڈی میڈ ایپلی کیشن ہے جو روبل، ڈالر اور یورو اور دیگر ادائیگی کے نظام کے لیے ادائیگی کے گیٹ وے کے طور پر کام کرتی ہے۔ یہ ہمارے بینک کھاتوں سے جڑا ہوا ہے اور ہماری آخری ایپلیکیشنز کے لیے کسی قسم کا API ہے۔ ہمارے پاس ایک ویب ایپلیکیشن بھی ہے جو صارفین کے لیے ایک ایکسچینجر کے طور پر کام کرتی ہے، ٹھیک ہے، ایک عام کیوی یا ویب منی اکاؤنٹ کی طرح - ایک اکاؤنٹ بنائیں، کارڈ شامل کریں، وغیرہ۔ یہ ہماری گیٹ وے ایپلیکیشن کے ساتھ بات چیت کرتا ہے، حالانکہ مقامی علاقے میں REST API کے ذریعے۔ اور اس لیے ہم نے بٹ کوائنز کو جوڑنے کا فیصلہ کیا اور ساتھ ہی انفراسٹرکچر کو اپ گریڈ کرنے کا فیصلہ کیا، کیونکہ... ابتدائی طور پر، میز کے نیچے دفتر میں ورچوئل باکسز پر سب کچھ جلدی میں رکھا گیا... سائٹ استعمال ہونے لگی، اور ہم اپ ٹائم اور کارکردگی کے بارے میں فکر کرنے لگے۔

تو، آئیے اہم چیز کے ساتھ شروع کرتے ہیں - ایک سرور کا انتخاب۔ کیونکہ ہماری مثال میں کاروبار چھوٹا ہے اور ہم اس میزبان (OVH) پر بھروسہ کرتے ہیں جسے ہم منتخب کریں گے۔ بجٹ کا آپشن جس میں سسٹم کو اصل .iso امیج سے انسٹال کرنا ناممکن ہے، لیکن اس سے کوئی فرق نہیں پڑتا، آئی ٹی سیکیورٹی ڈیپارٹمنٹ انسٹال شدہ امیج کا ضرور تجزیہ کرے گا۔ اور جب ہم بڑے ہو جائیں گے، ہم محدود جسمانی رسائی کے ساتھ تالا اور چابی کے نیچے اپنی الماری کرائے پر لیں گے، اور ہو سکتا ہے کہ ہم اپنا ڈی سی بنائیں گے۔ کسی بھی صورت میں، یہ یاد رکھنے کے قابل ہے کہ ہارڈویئر کرایہ پر لیتے وقت اور ریڈی میڈ امیجز کو انسٹال کرتے وقت، اس بات کا امکان ہوتا ہے کہ آپ کے سسٹم پر "ٹروجن فرام دی ہوسٹر" لٹکا ہوا ہو، جس کا مقصد زیادہ تر معاملات میں آپ کی جاسوسی کرنا نہیں ہوتا ہے۔ لیکن زیادہ آسان مینجمنٹ ٹولز سرور پیش کرنے کے لیے۔

سرور کی تنصیب

یہاں سب کچھ آسان ہے۔ ہم اپنی ضروریات کے مطابق ہارڈ ویئر کا انتخاب کرتے ہیں۔ پھر FreeBSD امیج کو منتخب کریں۔ ٹھیک ہے، یا ہم IPMI کے ذریعے یا ایک مانیٹر کے ذریعے (کسی دوسرے ہوسٹر اور ہمارے اپنے ہارڈ ویئر کے معاملے میں) جوڑتے ہیں اور .iso FreeBSD امیج کو ڈاؤن لوڈ میں فیڈ کرتے ہیں۔ آرکیسٹرل سیٹ اپ کے لیے میں استعمال کرتا ہوں۔ ناممکن и mfsbsd. صرف ایک چیز، کمسوفی کے ساتھ ہمارے معاملے میں، ہم نے انتخاب کیا۔ اپنی مرضی کی تنصیب آئینے میں موجود دو ڈسکوں میں صرف بوٹ اور /ہوم پارٹیشنز "کھلے" ہونے کے لیے، باقی ڈسک کی جگہ کو انکرپٹ کیا جائے گا، لیکن اس پر مزید بعد میں۔

ایک پنجرے میں بٹ کوائن؟

سسٹم کی تنصیب معیاری طریقے سے ہوتی ہے، میں اس پر غور نہیں کروں گا، میں صرف یہ نوٹ کروں گا کہ آپریشن شروع کرنے سے پہلے اس پر توجہ دینا ضروری ہے۔ سخت اختیارات جو یہ پیش کرتا ہے۔ 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

آپ کو یہ بھی یقینی بنانا چاہیے کہ آپ کے پاس سسٹم کا تازہ ترین ورژن انسٹال ہے، اور تمام اپ ڈیٹس اور اپ گریڈ انجام دیں۔. ہمارے معاملے میں، مثال کے طور پر، تازہ ترین ورژن میں اپ گریڈ کی ضرورت ہے، کیونکہ... انسٹالیشن سے پہلے کی تصاویر چھ ماہ سے ایک سال پیچھے رہ جاتی ہیں۔ ٹھیک ہے، وہاں ہم SSH پورٹ کو پہلے سے طے شدہ سے مختلف میں تبدیل کرتے ہیں، کلیدی تصدیق شامل کرتے ہیں اور پاس ورڈ کی تصدیق کو غیر فعال کرتے ہیں۔

پھر ہم ترتیب دیتے ہیں۔ aide، سسٹم کنفیگریشن فائلوں کی حیثیت کی نگرانی کرنا۔ آپ مزید تفصیل سے پڑھ سکتے ہیں۔ یہاں.

pkg install aide

اور ہمارے کرونٹاب میں ترمیم کریں۔

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 کو سپورٹ کرے اگر ہم مکمل ورچوئلائزیشن استعمال کرنے کا ارادہ رکھتے ہیں۔

کنٹینرز اور ورچوئل مشینوں کا انتظام کرنے کے لیے جو میں استعمال کرتا ہوں۔ سی بی ایس ڈی سے olevoleمیں اس کی اس شاندار افادیت کے لیے مزید صحت اور برکت کی خواہش کرتا ہوں!

کنٹینرز؟ ڈوکر دوبارہ یا کیا؟

لیکن نہیں. فری بی ایس ڈی جیلیں۔ کنٹینرائزیشن کے لیے ایک بہترین ٹول ہے، لیکن ذکر کیا گیا ہے۔ cbsd ان کنٹینرز کو آرکیسٹریٹ کرنے کے لیے، جنہیں سیل کہتے ہیں۔

کیج مختلف مقاصد کے لیے بنیادی ڈھانچے کی تعمیر کے لیے ایک انتہائی موثر حل ہے، جہاں انفرادی خدمات یا عمل کو مکمل طور پر الگ تھلگ کرنے کی ضرورت ہے۔ بنیادی طور پر، یہ میزبان سسٹم کا کلون ہے، لیکن اسے مکمل ہارڈویئر ورچوئلائزیشن کی ضرورت نہیں ہے۔ اور اس کا شکریہ، وسائل "مہمان OS" پر خرچ نہیں کیے جاتے ہیں، لیکن صرف اس کام پر خرچ کیے جاتے ہیں. جب خلیوں کو اندرونی ضروریات کے لیے استعمال کیا جاتا ہے، تو وسائل کے زیادہ سے زیادہ استعمال کے لیے یہ ایک بہت ہی آسان حل ہے - ایک ہارڈویئر سرور پر سیلز کا ایک گروپ اگر ضروری ہو تو ہر ایک انفرادی طور پر سرور کے پورے وسائل کو استعمال کر سکتا ہے۔ اس بات پر غور کرتے ہوئے کہ عام طور پر مختلف ذیلی خدمات کو اضافی کی ضرورت ہوتی ہے۔ وسائل مختلف اوقات میں، آپ ایک سرور سے زیادہ سے زیادہ کارکردگی نکال سکتے ہیں اگر آپ مناسب طریقے سے منصوبہ بندی کرتے ہیں اور سرورز کے درمیان خلیات میں توازن رکھتے ہیں۔ اگر ضروری ہو تو، خلیوں کو استعمال شدہ وسائل پر پابندیاں بھی دی جا سکتی ہیں۔

ایک پنجرے میں بٹ کوائن؟

مکمل ورچوئلائزیشن کے بارے میں کیا خیال ہے؟

جیسا کہ میں جانتا ہوں، cbsd کام کی حمایت کرتا ہے bhyve اور XEN ہائپر وائزرز۔ میں نے کبھی دوسرا استعمال نہیں کیا، لیکن پہلا نسبتاً نیا ہے۔ فری بی ایس ڈی سے ہائپرائزر. ہم استعمال کی ایک مثال دیکھیں گے۔ bhyve ذیل کی مثال میں.

میزبان ماحول کو انسٹال اور ترتیب دینا

ہم FS استعمال کرتے ہیں۔ 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 اور صف میں موجود باقی ڈسکوں کے لیے دہراتے ہیں۔ اور ہم ایک نیا بناتے ہیں۔ زیڈ ایف ایس پول.

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 خود بخود شروع نہیں ہوا جب تک کہ آپ ڈسکوں کو دستی طور پر یا خود بخود ڈکرپٹ نہیں کرتے ہیں (ہماری مثال میں یہ زبکس کے ذریعہ کیا جاتا ہے)

** میں بھی NAT from کا استعمال نہیں کرتا ہوں۔ 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 انسٹال کر لیا ہے، اب وقت آگیا ہے کہ ہم اپنا پہلا ورک ہارس بنائیں - پنجرے میں بند بٹ کوائن شیطان!

cbsd jconstruct-tui

ایک پنجرے میں بٹ کوائن؟

یہاں ہم سیل تخلیق کا ڈائیلاگ دیکھتے ہیں۔ تمام اقدار طے ہونے کے بعد، آئیے تخلیق کریں!

اپنا پہلا سیل بناتے وقت، آپ کو منتخب کرنا چاہیے کہ سیلز کی بنیاد کے طور پر کیا استعمال کرنا ہے۔ میں کمانڈ کے ساتھ فری بی ایس ڈی ریپوزٹری سے تقسیم کا انتخاب کرتا ہوں۔ 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

پنجرے میں بٹ کوائن موجود ہے، لیکن ہمیں گمنامی کی ضرورت ہے کیونکہ ہم 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 MB انحصار ایک پنجرے میں رکھا۔ اور میزبان ابھی تک صاف ہے۔

آئیے بعد میں 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 MB پیکجز الگ تھلگ

اگلا، ہم اپنی ایپلیکیشن گٹ کے ساتھ ڈاؤن لوڈ کرتے ہیں اور اسے لانچ کرتے ہیں۔

# 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

ٹھیک ہے، اب بٹ کوائنز کے بارے میں تھوڑا سا

ہمارے پاس جو ہے وہ یہ ہے کہ ہمارے پاس ایک ویب ایپلیکیشن ہے جو بیرونی طور پر سامنے آتی ہے اور یہ ہمارے پیمنٹ گیٹ وے سے مقامی طور پر بات کرتی ہے۔ اب ہمیں بٹ کوائن نیٹ ورک - نوڈ کے ساتھ بات چیت کے لیے کام کرنے کا ماحول تیار کرنے کی ضرورت ہے۔ bitcoind یہ صرف ایک ڈیمون ہے جو بلاکچین کی مقامی کاپی کو تازہ ترین رکھتا ہے۔ اس ڈیمون میں RPC اور والیٹ کی فعالیت ہے، لیکن ایپلیکیشن کی ترقی کے لیے زیادہ آسان "ریپرز" ہیں۔ شروع کرنے کے لیے، ہم نے ڈالنے کا فیصلہ کیا۔ electrum ایک CLI والیٹ ہے۔ یہ پرس ہم اسے اپنے بٹ کوائنز کے لیے "کولڈ اسٹوریج" کے طور پر استعمال کریں گے - عام طور پر، وہ بٹ کوائنز جنہیں صارفین کے لیے قابل رسائی سسٹم کے "باہر" ذخیرہ کرنے کی ضرورت ہوگی اور عام طور پر ہر کسی سے دور۔ اس میں ایک GUI بھی ہے، لہذا ہم اسی بٹوے کو اپنے پر استعمال کرنے جا رہے ہیں۔
لیپ ٹاپ فی الحال ہم عوامی سرورز کے ساتھ الیکٹرم کا استعمال کریں گے، اور بعد میں ہم اسے دوسرے سیل میں اٹھائیں گے۔ الیکٹرم ایکستاکہ کسی پر انحصار نہ کیا جائے۔

# 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

ایک پنجرے میں بٹ کوائن؟

ایک پنجرے میں بٹ کوائن؟

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

ٹھیک ہے، لینکس کلائنٹ مشین سے

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 پر سنتا ہے)

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

!

فوری اور مائیکرو ادائیگیوں کے ساتھ کام کرنے کے لیے، ہمیں ایک نوڈ کی بھی ضرورت ہے۔ بجلی کی نیٹ ورکدرحقیقت، یہ بٹ کوائن کے ساتھ کام کرنے کا ہمارا اہم ٹول ہوگا۔ U*سی بجلیجسے ہم بطور ڈیمون استعمال کرنے جا رہے ہیں۔ سپارکو پلگ ان، جو ایک مکمل HTTP (REST) ​​انٹرفیس ہے اور آپ کو آف چین اور آن چین دونوں لین دین کے ساتھ کام کرنے کی اجازت دیتا ہے۔ c-lightning کام کرنے کے لئے ضروری ہے bitcoind لیکن ہاں.

*مختلف زبانوں میں لائٹننگ نیٹ ورک پروٹوکول کے مختلف نفاذ ہیں۔ ان میں سے جن کا ہم نے تجربہ کیا، 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

ایک پنجرے میں بٹ کوائن؟

لہذا، ہم اپنے نوڈ کے حقیقی 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 ~

آپ کو 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

ایک پنجرے میں بٹ کوائن؟

ہمارے پاس کنٹینرز کا ایک سیٹ ہے، ہر ایک کی مقامی نیٹ ورک سے اور اس تک رسائی کی اپنی سطح ہے۔

# 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

جیسا کہ آپ دیکھ سکتے ہیں، بٹ کوائنڈ تمام 190 جی بی جگہ لیتا ہے۔ اگر ہمیں ٹیسٹ کے لیے کسی اور نوڈ کی ضرورت ہو تو کیا ہوگا؟ یہ وہ جگہ ہے جہاں ZFS کام آتا ہے۔ مدد سے cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com آپ اسنیپ شاٹ بنا سکتے ہیں اور اس سنیپ شاٹ کے ساتھ ایک نیا سیل منسلک کر سکتے ہیں۔ نئے سیل کی اپنی جگہ ہوگی، لیکن فائل سسٹم میں صرف موجودہ حالت اور اصل کے درمیان فرق کو مدنظر رکھا جائے گا (ہم کم از کم 190 جی بی بچائیں گے)

ہر سیل کا اپنا الگ ZFS ڈیٹاسیٹ ہے، اور یہ انتہائی آسان ہے۔ ZFS بھی اجازت دیتا ہے۔ مختلف دوسری عمدہ چیزیں کریں، جیسے SSH کے ذریعے سنیپ شاٹس بھیجنا۔ ہم اس کی وضاحت نہیں کریں گے، پہلے ہی بہت کچھ ہے۔

یہ بھی قابل توجہ ہے کہ میزبان کی ریموٹ مانیٹرنگ کی ضرورت، ان مقاصد کے لیے ہمارے پاس ہے۔ زبیبس.

B - حفاظت

سیکورٹی کے حوالے سے، آئیے بنیادی ڈھانچے کے تناظر میں کلیدی اصولوں سے شروع کرتے ہیں:

رازداری - UNIX جیسے سسٹمز کے معیاری ٹولز اس اصول کے نفاذ کو یقینی بناتے ہیں۔ ہم منطقی طور پر نظام کے ہر منطقی طور پر الگ الگ عنصر - ایک سیل تک رسائی کو الگ کرتے ہیں۔ صارفین کی ذاتی چابیاں استعمال کرتے ہوئے معیاری صارف کی تصدیق کے ذریعے رسائی فراہم کی جاتی ہے۔ خلیات کے درمیان اور اختتام تک تمام مواصلت خفیہ کردہ شکل میں ہوتی ہے۔ ڈسک انکرپشن کی بدولت، ہمیں ڈسک کو تبدیل کرتے وقت یا کسی دوسرے سرور پر منتقل ہوتے وقت ڈیٹا کی حفاظت کے بارے میں فکر کرنے کی ضرورت نہیں ہے۔ واحد اہم رسائی میزبان سسٹم تک رسائی ہے، کیونکہ ایسی رسائی عام طور پر کنٹینرز کے اندر موجود ڈیٹا تک رسائی فراہم کرتی ہے۔

سالمیت "اس اصول کا نفاذ کئی مختلف سطحوں پر ہوتا ہے۔ سب سے پہلے، یہ نوٹ کرنا ضروری ہے کہ سرور ہارڈویئر، ای سی سی میموری کے معاملے میں، ZFS پہلے سے ہی "باکس سے باہر" معلوماتی بٹس کی سطح پر ڈیٹا کی سالمیت کا خیال رکھتا ہے۔ فوری اسنیپ شاٹس آپ کو پرواز کے دوران کسی بھی وقت بیک اپ بنانے کی اجازت دیتے ہیں۔ آسان سیل ایکسپورٹ/امپورٹ ٹولز سیل کی نقل کو آسان بناتے ہیں۔

دستیابی - یہ پہلے سے ہی اختیاری ہے۔ آپ کی شہرت کی ڈگری اور اس حقیقت پر منحصر ہے کہ آپ سے نفرت کرنے والے ہیں۔ ہماری مثال میں، ہم نے یقینی بنایا کہ بٹوے تک رسائی صرف TOP نیٹ ورک سے ہے۔ اگر ضروری ہو تو، آپ فائر وال پر موجود ہر چیز کو بلاک کر سکتے ہیں اور سرنگوں کے ذریعے خصوصی طور پر سرور تک رسائی کی اجازت دے سکتے ہیں (TOR یا VPN ایک اور معاملہ ہے)۔ اس طرح سرور بیرونی دنیا سے حتی الامکان منقطع ہو جائے گا، اور صرف ہم خود اس کی دستیابی کو متاثر کر سکیں گے۔

انکار کا امکان - اور اس کا انحصار مزید آپریشن اور صارف کے حقوق، رسائی وغیرہ کے لیے درست پالیسیوں کی تعمیل پر ہے۔ لیکن صحیح نقطہ نظر کے ساتھ، صارف کے تمام اعمال کا آڈٹ کیا جاتا ہے، اور خفیہ حلوں کی بدولت یہ واضح طور پر شناخت کرنا ممکن ہے کہ بعض اعمال کس نے اور کب انجام دیے۔

بلاشبہ، بیان کردہ کنفیگریشن اس بات کی قطعی مثال نہیں ہے کہ اسے ہمیشہ کیسا ہونا چاہیے، بلکہ یہ اس کی ایک مثال ہے کہ یہ کیسا ہو سکتا ہے، جبکہ انتہائی لچکدار اسکیلنگ اور حسب ضرورت صلاحیتوں کو برقرار رکھا جاتا ہے۔

مکمل ورچوئلائزیشن کے بارے میں کیا خیال ہے؟

سی بی ایس ڈی کا استعمال کرتے ہوئے مکمل ورچوئلائزیشن کے بارے میں آپ کر سکتے ہیں۔ یہاں پڑھیں. میں اسے صرف کام کے لیے شامل کروں گا۔ bhyve آپ کو کرنل کے کچھ اختیارات کو فعال کرنے کی ضرورت ہے۔

# cat /etc/rc.conf

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

# cat /boot/loader.conf

...
vmm_load="YES"
...

لہذا اگر آپ کو اچانک ایک ڈاکر شروع کرنے کی ضرورت ہے، تو کچھ ڈیبین انسٹال کریں اور جائیں!

ایک پنجرے میں بٹ کوائن؟

بس

مجھے لگتا ہے کہ میں صرف اتنا ہی شیئر کرنا چاہتا تھا۔ اگر آپ کو مضمون پسند آیا، تو آپ مجھے کچھ بٹ کوائن بھیج سکتے ہیں۔ bc1qu7lhf45xw83ddll5mnzte6ahju8ktkeu6qhttc. اگر آپ سیلز کو ایکشن میں آزمانا چاہتے ہیں اور کچھ بٹ کوائنز حاصل کرنا چاہتے ہیں تو آپ میری پر جا سکتے ہیں۔ پالتو جانوروں کا منصوبہ.

ماخذ: www.habr.com