انفراسٽرڪچر کي بهتر ڪرڻ جي رستي تي هلندي، مون هڪ قديم ۽ ڏکوئيندڙ سوال کي ختم ڪرڻ جو فيصلو ڪيو - غير ضروري اشارن کان سواءِ، ساٿين (ڊولپرز، ٽيسٽرز، ايڊمنسٽريٽرن، وغيره) کي موقعو فراهم ڪيو ته هو پنهنجي ورچوئل مشينن کي اوورٽ ۾ آزاديءَ سان منظم ڪن. Ovirt وٽ ڪيترائي حصا آھن جن کي منھنجي مسئلي کي حل ڪرڻ لاءِ ترتيب ڏيڻ جي ضرورت آھي: ويب انٽرفيس پاڻ، noVNC ڪنسول ۽ اپلوڊ ڊسڪ تصويرون.
مون کي ”ميڪ ان بيڊ“ بٽڻ نه مليو، تنهن ڪري مان توهان کي ڏيکاريان ٿو ته مون هن مسئلي کي حل ڪرڻ لاءِ ڪهڙن ڪهڙن نوبن جو رخ ڪيو. ھيٺ ڏنل مڪمل ھدايتون:

اعلان:
شروع ڪرڻ کان پهريان، مان توهان جو ڌيان هن حقيقت ڏانهن ڇڪائڻ چاهيان ٿو ته مون کي اڻڄاتل سببن جي ڪري، انفراسٽرڪچر ڊومينز نجي زونن، مقامي، وغيره ۾ ٺاهيا ويا آهن.
مون کي خبر ناهي ته ڇا مون کي عوامي زون ۾ تنظيم جي ڊومين استعمال ڪرڻ کان روڪي ٿو. مثال طور، Alex-GLuck-Awesome-Company.local ڊومين جي بدران، توهان محفوظ طور تي ڪمپني جي ويب سائيٽ Alex-GLuck-Awesome-Company.com لاءِ ڊومين استعمال ڪري سگهو ٿا.
جيڪڏهن توهان ڊپ آهيو ته توهان پنهنجي تنظيم ۾ ڊومينز جي ٽريڪ نه رکي سگهندا، ۽ اهو ڪجهه ٽوڙي ڇڏيندو، پوء هڪ سال جي معمولي 100 روبل لاء توهان خريد ڪري سگهو ٿا aglac.com انفراسٽرڪچر لاءِ الڳ ڊومين.
عوامي علائقن ۾ ڊومينز استعمال ڪرڻ ڇو وڌيڪ فائديمند آهي:
1. توهان جي تنظيم ۾ اهڙيون خدمتون آهن جيڪي عوامي طور تي دستياب آهن: وي پي اين، فائل شيئرنگ (سيفائل، نيڪس ڪلائوڊ)، ۽ ٻيا. اهڙين خدمتن تي ٽرئفڪ انڪرپشن سيٽ اپ ڪرڻ عام طور تي ٿورو سليپ ڊيش معاملو هوندو آهي، ۽ اسان MitM حملن جي خلاف دفاع نه ڪنداسين ڇاڪاڻ ته اهو ڏکيو آهي (حقيقت ۾ نه).
يا توهان وٽ آهي هڪ سروس ايڊريس آفيس اندر، ۽ ٻيو انٽرنيٽ تان، ۽ اهي ڪنيڪشن برقرار رکڻ گهرجن، جيڪي اسان جي محدود ماهرن جي وسيلن کي ضايع ڪن ٿا. خير، ملازمن کي مختلف پتا ياد رکڻا پوندا، جيڪي تڪليف ڏيندڙ آهن.
2. توھان استعمال ڪري سگھوٿا مفت سرٽيفڪيٽ اختيارين پنھنجي اندروني خدمتن کي انڪرپٽ ڪرڻ لاءِ.
توهان جي پنهنجي PKI هڪ خدمت آهي جنهن کي سپورٽ ڪرڻ جي ضرورت آهي؛ مفت سرٽيفڪيشن اختيارين کان PKI استعمال ڪرڻ جي موقعي لاءِ هر سال 100 روبل ملازمن جي وقت جي ادائيگي کان وڌيڪ جيڪي ان کي ٻين ڪمن تي خرچ ڪري سگھن ٿا.
3. جڏهن توهان جي پنهنجي سرٽيفڪيٽ اٿارٽي استعمال ڪندي، توهان پنهنجي ريموٽ ملازمن ۽ ساٿين جي چيلن ۾ هڪ اسپيڪ وجهي ڇڏيندا جيڪي BYOD سان ڪم ڪرڻ چاهيندا آهن (پنهنجا پنهنجا ليپ ٽاپ، فون، ٽيبليٽ آڻيندا) ۽ توهان انهن جي ڊوائيس کي منظم نٿا ڪري سگهو. اهي ميڪس، لينڪس، Androids، iOS، ونڊوز آڻين ٿا - اهڙي زو جي حمايت ڪرڻ ۾ ڪو به مقصد ناهي.
هر شي ۾، يقينا، استثنا آهن، ۽ بينڪ ٻين سخت ادارن سان جيڪي سيڪيورٽي پاليسيون قائم ڪيون آهن انهن جي ملازمن لاء خدمت بهتر ڪرڻ جي قابل نه هوندا.
انهن لاءِ، ادا ڪيل سرٽيفڪيشن اٿارٽيون آهن جيڪي هڪ خاص رقم لاءِ پنهنجو CA سرٽيفڪيٽ سائن ڪري سگهن ٿيون (گوگل ”روٽ سائننگ سروس“).
اتي ٻيا سبب آهن ڇو ته اهو عوامي ڊومين استعمال ڪرڻ کان وڌيڪ فائدي وارو آهي (سڀ کان اهم شيء اهو آهي ته اهو توهان سان تعلق رکي ٿو)، پر هي مضمون انهي بابت ناهي.
ڳالهه آهي...
ڌيان! جيڪڏهن توهان اوورٽ جي قابل اعتماد لسٽ ۾ Let's Encrypt CA سرٽيفڪيٽ شامل ڪيو ٿا، اهو توهان جي سسٽم جي حفاظت کي متاثر ڪري سگهي ٿو!
پهرين شيء جيڪا توهان کي ڌيان ڏيڻ جي ضرورت آهي اها آهي ته انٽرنيٽ تي Ovirt انٽرفيس کي ظاهر ڪرڻ خراب عمل آهي، ڇاڪاڻ ته اهو ڪوبه عملي احساس نٿو رکي، ۽ اضافي حفاظتي خطرا پيدا ڪري ٿو.
تنهن ڪري، توهان کي ضرورت آهي ته هڪ سرٽيفڪيٽ حاصل ڪريو اسان جي بيسٽشن ميزبانن مان هڪ تي، ۽ پوءِ سرٽيفڪيٽ ۽ چيڪ کي اسان جي ميزبان ڏانهن منتقل ڪريو ovirt-انجڻ سان.
اسان پنهنجي بيسٽشن ميزبان جي ٻاهرين ايڊريس کي ڊي اين ايس ۾ شامل ڪندا آهيون اسان جي اوورٽ نالي سان ovirtengine.example.com، مان ڇڏيندس certbot ۽ nginx جي انسٽاليشن کي مناظر جي پويان (اهو ڪيئن ڪجي اڳ ۾ ئي Habré تي بيان ڪيو ويو آهي).
njinx ورجن سيٽنگ >=1.15.7
/etc/nginx/conf.d/default.conf
server {
server_name _;
listen 80 default_server;
location /robots.txt { alias /usr/share/nginx/html/robots.txt; }
location /.well-known {
root /usr/share/nginx/html;
}
location / {
return 444;
}
}
server {
server_name _;
listen 443 ssl http2 default_server;
location /robots.txt { alias /usr/share/nginx/html/robots.txt; }
location /.well-known {
root /usr/share/nginx/html;
}
ssl_certificate /etc/nginx/ssl/$ssl_server_name/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/$ssl_server_name/privkey.pem;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
# позволяем серверу прикреплять OCSP-ответы, тем самым уменьшая время загрузки страниц у пользователей
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
location / {
return 444;
}
}
ان کان پوء اسان کي اسان جي سند ۽ چيڪ حاصل:
certbot certonly --nginx -d ovirtengine.example.com
آرڪائيو اسان جي سرٽيفڪيٽ ۽ ڪيچ:
tar Phczf /tmp/ovirtengine.example.com.tgz /etc/letsencrypt/live/ovirtengine.example.com
آرڪائيو ڊائون لوڊ ڪريو بيشن ميزبان مان ۽ ان کي اپلوڊ ڪريو اسان جي اوورٽ انجڻ تي:
scp bastion-host:/tmp/ovirtengine.example.com.tgz /tmp/
scp /tmp/ovirtengine.example.com.tgz ovirtengine.example.com:/
اچو ته مقصد ڏانهن وڌون
اڳيون، اسان پنھنجي آرڪائيو کي کوليو ۽ فائل جي جڳھ جي سسٽم کي سمجھڻ کي آسان ڪرڻ لاء سم لنڪس ٺاھيو:
tar Pxzf /ovirtengine.example.com.tgz && rm -f ovirtengine.example.com.tgz
mkdir -p /etc/letsencrypt/live
ln -f -s /etc/letsencrypt/live /etc/pki/letsencrypt
اسان Ovirt ۾ ٺاهيل pki ترتيب ڏيون ٿا ته جيئن جاوا سرٽيفڪيٽ اسٽور (openjdk) سرٽيفڪيٽن جي تصديق ڪرڻ لاءِ استعمال ٿئي:
cat << EOF > /etc/ovirt-engine/engine.conf.d/99-setup-pki.conf
ENGINE_HTTPS_PKI_TRUST_STORE="/etc/pki/java/cacerts"
ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD=""
EOF
اسان CA کي let's encrypt کان der فارميٽ ۾ تبديل ڪريون ٿا ۽ ان کي اوورٽ جاوا ٽرسٽ اسٽور جي سرٽيفڪيٽ اسٽور ۾ شامل ڪريون ٿا (هي هڪ ڪنٽينر آهي جنهن ۾ سرٽيفڪيٽن جي فهرست هوندي آهي، اهڙو نظام جاوا ۾ استعمال ٿيندو آهي):
openssl x509 -outform der -in /etc/pki/letsencrypt/ovirtengine.example.com/chain.pem -out /tmp/ovirtengine.example.com.chain.der
keytool -import -alias "Let's Encrypt Authority X3" -file /tmp/ovirtengine.example.com.chain.der -keystore /etc/pki/ovirt-engine/.truststore -storepass $(grep '^ENGINE_PKI_TRUST_STORE_PASSWORD' /etc/ovirt-engine/engine.conf.d/10-setup-pki.conf | cut -f 2 -d '"')
rm -f /tmp/ovirtengine.example.com.chain.der
اسان اپاچي لاءِ SSL سيٽنگون ايڊٽ ڪريون ٿا، سم لنڪس کي سپورٽ ڪرڻ لاءِ هڪ پيراميٽر شامل ڪيو ۽ CA لاءِ پيراميٽر کي هٽايو جنهن سان سرٽيفڪيٽ چيڪ ڪرڻ لاءِ (ڊفالٽ طور، تصديق لاءِ استعمال ڪيو ويندو قابل اعتماد CAs جو سسٽم):
sed -r -i 's|^(SSLCACertificateFile.*)|#1|g' /etc/httpd/conf.d/ssl.conf
sed -r -i '0,/(^#?SSLCACertificateFile.*)/ s//1nOptions FollowSymlinks/' /etc/httpd/conf.d/ssl.conf
ان کان پوء، صرف ان صورت ۾، اسان اوورٽ جي خودڪار PKI ذريعي ٺاهيل اصل فائلن کي بيڪ اپ ڪريون ٿا ۽ انهن کي فائلن سان سملنڪس سان تبديل ڪريو Let's Encrypt:
ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/fullchain.pem /etc/pki/ovirt-engine/apache-chain.pem
services=( 'apache' 'imageio-proxy' 'websocket-proxy' )
for i in "${services[@]}"; do
cp /etc/pki/ovirt-engine/certs/$i.cer{,."$( date +%F )".bak}
cp /etc/pki/ovirt-engine/keys/$i.key.nopass{,."$( date +%F )".bak}
ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/privkey.pem /etc/pki/ovirt-engine/keys/$i.key.nopass
ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/cert.pem /etc/pki/ovirt-engine/certs/{apache,imageio-proxy,websocket-proxy}.cer
done
اسان فائلن تي SElinux حوالن کي بحال ڪريون ٿا ۽ اسان جي خدمتن کي ٻيهر شروع ڪيو (httpd, ovirt-engine, ovirt-imageio-proxy, ovirt-websocket-proxy):
restorecon -Rv /etc/pki
systemctl restart httpd ovirt-engine ovirt-imageio-proxy ovirt-websocket-proxy
httpd — ويب سرور عارضي
ovirt-انجڻ - ovirt ويب انٽرفيس
ovirt-imageio-proxy - ڊسڪ تصويرون ڊائون لوڊ ڪرڻ لاءِ ڊيمون
ovirt-websocket-proxy - خدمت noVNC ڪنسول هلائڻ لاءِ
مٿين سڀني کي Ovirt ورزن 4.2 تي آزمايو ويو.
Ovirt تي سرٽيفڪيٽ جي خودڪار تجديد
سٺي حفاظتي طريقن جي مطابق، بيسٽشن ميزبان ۽ اوورٽ جي وچ ۾ ڪوبه تعلق نه هجڻ گهرجي، ۽ سرٽيفڪيٽ صرف 3 مهينن لاء جاري ڪيو ويندو آهي. هي اهو آهي جتي هڪ تڪراري مسئلو پيدا ٿئي ٿو ته مون سرٽيفڪيٽن جي تجديد کي ڪيئن لاڳو ڪيو.
مون وٽ هڪ جوابي راند جو ڪتاب آهي جيڪو هر روز صبح 5 وڳي هڪ شيڊول مطابق فورمن تي هلندو آهي. هي پلے بڪ اوورٽ ڏانهن وڃي ٿو، سرٽيفڪيٽ جي صحيحيت جي مدت کي چيڪ ڪري ٿو، ۽ جيڪڏهن ختم ٿيڻ کان پهريان 5 ڏينهن کان گهٽ بچيا آهن، اهو بيسٽشن ميزبان ڏانهن وڃي ٿو ۽ سرٽيفڪيٽ کي اپڊيٽ ڪرڻ شروع ڪري ٿو.
سرٽيفڪيٽ کي اپڊيٽ ڪرڻ کان پوء، اهو فولڊر کي فائلن سان گڏ ڪري ٿو، ان کي فارمن ميزبان کي ڊائون لوڊ ڪري ٿو ۽ ان کي اوورٽ ميزبان کي ان زپ ڪري ٿو. جنهن کان پوءِ SElinux فائلن تي حوالن کي بحال ڪري ٿو ۽ اسان جي خدمتن کي ٻيهر شروع ڪري ٿو.
جو ذريعو: www.habr.com
