ائين ٿيو آهي ته پروفيشن جي لحاظ کان مان ڪمپيوٽر سسٽم ۽ نيٽ ورڪ جو ايڊمنسٽريٽر آهيان (مختصر ۾: سسٽم ايڊمنسٽريٽر) ۽ مون کي 10 سالن کان وڌيڪ عرصي کان پروفيسر کي ٻڌائڻ جو موقعو مليو. مختلف قسم جي سسٽم جون سرگرميون، بشمول اهي جيڪي [انتهائي] حفاظتي قدمن جي ضرورت هونديون آهن. اهو به ٿيو ته ڪجهه عرصو اڳ مون کي اهو دلچسپ لڳو dev
تنهن ڪري، مان گذري رهيو هوس). پر مان ترقي بابت نه ڳالهائي رهيو آهيان، مان ايپليڪيشنن لاءِ محفوظ ۽ ڪارائتو ماحول جي ڳالهه ڪري رهيو آهيان.
مالي ٽيڪنالاجي (fintechانفارميشن سيڪيورٽي جي اڳيان وڃو (انفو) ۽ پهريون ٻئي کان سواء ڪم ڪري سگهي ٿو، پر ڊگهي لاء نه. ان ڪري مان چاهيان ٿو ته منهنجو تجربو ۽ اوزارن جو سيٽ جيڪو آئون استعمال ڪريان ٿو، جنهن ۾ ٻئي شامل آهن fintech، ۽ انفو، ۽ ساڳئي وقت، ۽ پڻ وسيع يا مڪمل طور تي مختلف مقصد لاء استعمال ڪري سگهجي ٿو. هن آرٽيڪل ۾ آئون توهان کي Bitcoin بابت گهڻو ڪجهه نه ٻڌائيندس، پر مالياتي (۽ نه رڳو) خدمتن جي ترقي ۽ آپريشن لاءِ بنيادي ڍانچي جي ماڊل بابت - هڪ لفظ ۾، اهي خدمتون جتي "B" اهميت رکي ٿي. اهو ٻنهي تي لاڳو ٿئي ٿو Bitcoin مٽا سٽا تي ۽ هڪ ننڍڙي ڪمپني جي خدمتن جي سڀ کان عام ڪارپوريٽ زو تي جيڪو ڪنهن به طريقي سان Bitcoin سان ڳنڍيل ناهي.
مان سمجهان ٿو ته مان اصولن جو حامي آهيان "ان کي بيوقوف سادو رکو" и "گهٽ وڌيڪ آهي"تنهن ڪري، ٻئي مضمون ۽ جيڪي ان ۾ بيان ڪيو ويو آهي، اهي خاصيتون هونديون جيڪي اهي اصول آهن.
خيالي منظر: اچو ته bitcoin exchanger جو مثال استعمال ڪندي هر شيءِ تي نظر وجهون. اسان bitcoins ۽ واپس لاء روبل، ڊالر، يورو جي بدلي کي شروع ڪرڻ جو فيصلو ڪيو، ۽ اسان وٽ اڳ ۾ ئي هڪ ڪم ڪندڙ حل آهي، پر ٻين ڊجيٽل پئسن جهڙوڪ qiwi ۽ webmoney لاء، i.e. اسان سڀني قانوني مسئلن کي بند ڪري ڇڏيو آهي، اسان وٽ هڪ تيار ٿيل ايپليڪيشن آهي جيڪا روبل، ڊالر ۽ يورو ۽ ٻين ادائگي جي سسٽم لاء ادائيگي گيٽ وي جي طور تي ڪم ڪري ٿي. اهو اسان جي بئنڪ اڪائونٽن سان ڳنڍيل آهي ۽ اسان جي آخري ايپليڪيشنن لاءِ ڪجهه قسم جو API آهي. اسان وٽ هڪ ويب ايپليڪيشن پڻ آهي جيڪا استعمال ڪندڙن لاءِ ايڪسچينج ڪندڙ طور ڪم ڪري ٿي، سٺو، هڪ عام qiwi يا webmoney اڪائونٽ وانگر - هڪ کاتو ٺاهيو، ڪارڊ شامل ڪريو، وغيره. اهو اسان جي گيٽ وي ايپليڪيشن سان رابطو ڪري ٿو، جيتوڻيڪ مقامي علائقي ۾ REST API ذريعي. ۽ تنهنڪري اسان bitcoins کي ڳنڍڻ جو فيصلو ڪيو ۽ ساڳئي وقت انفراسٽرڪچر کي اپڊيٽ ڪيو، ڇاڪاڻ ته ... شروعات ۾، سڀ ڪجھ جلدي ۾ ٽيبل جي هيٺان آفيس ۾ ورچوئل باڪس تي رکيل هئي... سائيٽ استعمال ٿيڻ شروع ٿي، ۽ اسان اپٽائم ۽ ڪارڪردگي بابت پريشان ٿيڻ شروع ڪيو.
تنهن ڪري، اچو ته بنيادي شيء سان شروع ڪريون - هڪ سرور چونڊڻ. ڇاڪاڻ ته اسان جي مثال ۾ ڪاروبار ننڍڙو آهي ۽ اسان ميزبان (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 -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
انهن ڪنٽينرن کي ترتيب ڏيڻ لاءِ، جن کي سيل سڏيو ويندو آهي.
ڪيج مختلف مقصدن لاءِ بنيادي ڍانچي جي تعمير لاءِ هڪ انتهائي موثر حل آهي، جتي انفرادي خدمتن يا عملن کي مڪمل طور تي الڳ ڪرڻ جي ضرورت پوندي آهي. لازمي طور تي، اهو ميزبان سسٽم جو هڪ کلون آهي، پر اهو مڪمل هارڊويئر ورچوئلائيزيشن جي ضرورت ناهي. ۽ انهي جي مهرباني، وسيلن کي "مهمان او ايس" تي خرچ نه ڪيو ويو آهي، پر صرف ڪم تي ڪيو پيو وڃي. جڏهن سيلز اندروني ضرورتن لاءِ استعمال ڪيا ويندا آهن، اهو هڪ تمام آسان حل آهي وسيلن جي بهتر استعمال لاءِ - هڪ هارڊويئر سرور تي سيلز جو هڪ گروپ هر هڪ انفرادي طور تي پوري سرور وسيلن کي استعمال ڪري سگهي ٿو جيڪڏهن ضروري هجي. غور ڪيو ته عام طور تي مختلف ماتحت اضافي جي ضرورت آهي. وسيلا مختلف وقتن تي، توهان هڪ سرور مان وڌ ۾ وڌ ڪارڪردگي ڪڍي سگهو ٿا جيڪڏهن توهان صحيح طريقي سان منصوبابندي ڪري سگهو ٿا ۽ سرور جي وچ ۾ سيلز کي بيلنس ڪريو. جيڪڏهن ضروري هجي ته، سيلز پڻ استعمال ڪيل وسيلن تي پابنديون ڏئي سگهجن ٿيون.
مڪمل ورچوئلائيزيشن بابت ڇا؟
جيئن مان ڄاڻان ٿو، 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
خودڪار طور تي شروع نه ٿيو جيستائين توهان ڊسڪ کي دستي طور تي يا خودڪار طور تي ڊسڪ نه ڪيو (اسان جي مثال ۾ اهو زبڪس طرفان ڪيو ويو آهي)
** مان پڻ استعمال نٿو ڪريان 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
فائر وال جي پاليسين کي ترتيب ڏيڻ پڻ هڪ الڳ موضوع آهي، تنهنڪري آئون بلاڪ آل پاليسي کي ترتيب ڏيڻ ۽ وائيٽ لسٽن کي ترتيب ڏيڻ ۾ نه ويندس، توهان اهو پڙهي سگهو ٿا.
خير... اسان سي بي ايس ڊي انسٽال ڪيو آهي، اهو وقت آهي اسان جو پهريون ڪم هارس ٺاهڻ جو - پنججدار 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 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 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
firewall
اچو ته ڏسون ته 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
خير، هاڻي bitcoins جي باري ۾ ٿورو
اسان وٽ ڇا آهي اسان وٽ هڪ ويب ايپليڪيشن آهي جيڪا ٻاهران ظاهر ڪئي وئي آهي ۽ اها مقامي طور تي اسان جي ادائيگي گيٽ وي سان ڳالهائي ٿي. هاڻي اسان کي Bitcoin نيٽ ورڪ سان رابطي لاء ڪم ڪندڙ ماحول تيار ڪرڻ جي ضرورت آهي - نوڊ bitcoind
اهو صرف هڪ ڊيمون آهي جيڪو بلاڪچين جي مقامي ڪاپي کي تاريخ تائين رکي ٿو. ھن ڊيمن ۾ آر پي سي ۽ والٽ ڪارڪردگي آھي، پر ايپليڪيشن ڊولپمينٽ لاءِ وڌيڪ آسان ”ريپرز“ آھن. شروع ڪرڻ لاء، اسان رکڻ جو فيصلو ڪيو electrum
هڪ CLI والٽ آهي.
ليپ ٽاپ في الحال اسان عوامي سرورز سان اليڪٽرم استعمال ڪنداسين، ۽ بعد ۾ اسان ان کي ٻئي سيل ۾ وڌائينداسين
# 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 ۽
ھاڻي اسان پنھنجي والٽ ماحول کي ترتيب ڏئي سگھون ٿا
# 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
اچو ته ڳنڍيون (هن ڪم ڪرڻ لاءِ، توهان کي هڪ مقامي TOR ڊيمن جي ضرورت آهي جيڪا 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
ڪاميابي!
فوري ۽ مائڪرو ادائگي سان ڪم ڪرڻ لاء، اسان کي پڻ ضرورت آهي نوڊ c-lightning
ڪم ڪرڻ لاء گهربل bitcoind
پر ها.
*مختلف ٻولين ۾ لائيٽنگ نيٽ ورڪ پروٽوڪول جا مختلف لاڳو ٿين ٿا. انهن مان جن کي اسان آزمايو، سي-لائيٽنگ (سي ۾ لکيل) سڀ کان وڌيڪ مستحڪم ۽ وسيلا-موثر لڳي
# 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 ذريعي سڀني مالي ٽرانزيڪشن کي هلائڻ چاهيون ٿا. تنهن ڪري، ٻي .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
هاڻي اچو ته سي-لائيٽنگ لاءِ هڪ ترتيب ٺاهي
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
جئين توهان ڏسي سگهو ٿا، bitcoind سڄي 190 GB جي جاء تي وٺي ٿو. ڇا جيڪڏهن اسان کي جانچ لاءِ ٻئي نوڊ جي ضرورت آهي؟ اهو آهي جتي ZFS هٿ ۾ اچي ٿو. مدد سان cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com
توهان هڪ سنيپ شاٽ ٺاهي سگهو ٿا ۽ هن سنيپ شاٽ سان هڪ نئون سيل جوڙيو. نئين سيل کي پنهنجي جاءِ هوندي، پر رڳو موجوده حالت ۽ اصل جي وچ ۾ فرق کي فائيل سسٽم ۾ رکيو ويندو (اسان گهٽ ۾ گهٽ 190 GB بچائينداسين)
هر سيل پنهنجي الڳ ZFS ڊيٽا سيٽ آهي، ۽ اهو انتهائي آسان آهي.
اهو پڻ قابل ذڪر آهي ته ميزبان جي ٻاهرين نگراني جي ضرورت آهي، انهن مقصدن لاء اسان وٽ آهي
ب - حفاظت
سيڪيورٽي جي حوالي سان، اچو ته بنيادي اصولن کان شروع ڪريون بنيادي ڍانچي جي حوالي سان:
اعتماد وارو - UNIX-جهڙوڪ سسٽم جا معياري اوزار هن اصول تي عمل درآمد کي يقيني بڻائين. اسان منطقي طور تي سسٽم جي هر منطقي طور تي الڳ الڳ عنصر تائين رسائي حاصل ڪندا آهيون - هڪ سيل. رسائي فراهم ڪئي وئي آهي معياري صارف جي تصديق ذريعي استعمال ڪندڙن جي ذاتي ڪنجين کي استعمال ڪندي. سڀ ڪميونيڪيشن جي وچ ۾ ۽ آخر تائين سيلز انڪريپٽ فارم ۾ ٿئي ٿي. ڊسڪ انڪرپشن جي مهرباني، اسان کي ڊيٽا جي حفاظت جي باري ۾ پريشان ٿيڻ جي ضرورت ناهي جڏهن ڊسڪ کي تبديل ڪرڻ يا ٻئي سرور ڏانهن لڏپلاڻ. صرف نازڪ رسائي ميزبان سسٽم تائين رسائي آهي، ڇاڪاڻ ته اهڙي رسائي عام طور تي ڪنٽينرز اندر ڊيٽا تائين رسائي فراهم ڪري ٿي.
سالميت ”هن اصول جو نفاذ ڪيترن ئي مختلف سطحن تي ٿئي ٿو. پهرين، اهو نوٽ ڪرڻ ضروري آهي ته سرور هارڊويئر جي صورت ۾، اي سي سي ميموري، 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"
...
تنهن ڪري جيڪڏهن توهان کي اوچتو هڪ ڊاکر شروع ڪرڻ جي ضرورت آهي، پوء ڪجهه ديبين کي انسٽال ڪريو ۽ وڃو!
اهو ئي سڀ ڪجهه آهي
مان سمجهان ٿو ته اهو سڀ ڪجهه آهي جيڪو مان حصيداري ڪرڻ چاهيان ٿو. جيڪڏھن توھان مضمون پسند ڪيو، ته توھان مون کي موڪلي سگھو ٿا ڪجھ Bitcoins -
جو ذريعو: www.habr.com