Mixi tul it-triq tat-titjib tal-infrastruttura, iddeċidejt li jispiċċa mistoqsija antika u bl-uġigħ - mingħajr ġesti bla bżonn, tipprovdi l-opportunità lill-kollegi (iżviluppaturi, testers, amministraturi, eċċ) biex jimmaniġġjaw b'mod indipendenti l-magni virtwali tagħhom f'ovirt. Ovirt għandu diversi komponenti li jeħtieġ li jiġu kkonfigurati biex issolvi l-kwistjoni tiegħi: l-interface tal-web innifsu, il-console noVNC u l-immaġini tad-diska uploading.
Ma sibtx il-buttuna "Make It Bad", għalhekk qed nurik liema pumi dawwart biex issolvi din il-problema. Istruzzjonijiet sħaħ taħt il-qatgħa:

DISCLAIMER:
Qabel nibda, nixtieq niġbed l-attenzjoni tiegħek għall-fatt li għal xi raġuni mhux magħrufa għalija, dominji ta 'infrastruttura huma maħluqa f'żoni privati lan, lokali, eċċ.
Ma nafx x'jwaqqafni milli nuża dominju ta' organizzazzjoni f'żona pubblika. Pereżempju, minflok id-dominju Alex-GLuck-Awesome-Company.local, tista 'tuża b'mod sikur id-dominju għall-websajt tal-kumpanija Alex-GLuck-Awesome-Company.com.
Jekk tibża 'li ma tkunx tista' żżomm kont tad-dominji fl-organizzazzjoni tiegħek, u dan ikisser xi ħaġa, allura għal 100 rublu modest fis-sena tista 'tixtri dominju separat għall-infrastruttura aglac.com.
Għaliex huwa aktar profittabbli li tuża dominji f'żoni pubbliċi:
1. L-organizzazzjoni tiegħek għandha servizzi li huma aċċessibbli għall-pubbliku: vpn, kondiviżjoni ta' fajls (seafile, nextcloud), u oħrajn. It-twaqqif ta' encryption tat-traffiku fuq servizzi bħal dawn ġeneralment ikun sforz kemxejn bla ħsieb, u mhux se nkunu qed niddefendu kontra attakki MitM għax huwa diffiċli (mhux tassew).
Jew għandek indirizz wieħed tas-servizz ġewwa l-uffiċċju, u ieħor mill-Internet, u dawn il-konnessjonijiet jeħtieġ li jinżammu, li jaħli r-riżorsi speċjalizzati limitati tagħna. Ukoll, l-impjegati jridu jiftakru indirizzi differenti, li huwa inkonvenjenti.
2. Tista' tuża l-awtoritajiet taċ-ċertifikat b'xejn biex tikkriptaw is-servizzi interni tiegħek.
Il-PKI tiegħek stess huwa servizz li jeħtieġ li jiġi appoġġjat; 100 rublu fis-sena għall-opportunità li tuża PKI minn awtoritajiet ta 'ċertifikazzjoni b'xejn aktar milli tħallas għall-ħin tal-impjegati li jistgħu jonfquh fuq kompiti oħra.
3. Meta tuża l-awtorità taċ-ċertifikat tiegħek stess, int se tpoġġi tkellem fir-roti tal-impjegati u l-kollegi remoti tiegħek li jridu jaħdmu bil-BYOD (ġibu l-laptops, it-telefowns, it-tablets tagħhom stess) u ma tistax timmaniġġja l-apparat tagħhom. Huma jġibu Macs, Linux, Androids, iOS, Windows - m'hemm l-ebda skop li tappoġġja żoo bħal dan.
F'kollox, ovvjament, hemm eċċezzjonijiet, u banek b'intrapriżi ħarxa oħra li stabbilixxew politiki ta 'sigurtà qatt ma jkunu jistgħu jtejbu s-servizz għall-impjegati tagħhom.
Għalihom, hemm awtoritajiet ta 'ċertifikazzjoni mħallsa li jistgħu jiffirmaw iċ-ċertifikat CA tagħhom għal ċertu ammont (Google "root signing service").
Hemm raġunijiet oħra għaliex huwa aktar profittabbli li tuża dominju pubbliku (l-iktar ħaġa importanti hija li tappartjeni lilek), iżda dan l-artikolu mhux dwar dan.
Il-punt hu...
ATTENZJONI! Jekk iżżid ċertifikat ta' Let's Encrypt CA mal-lista ta' fiduċja ta' ovirt, dan jista' jaffettwa s-sigurtà tas-sistemi tiegħek!
L-ewwel ħaġa li trid tagħti attenzjoni għaliha hija li l-esponiment tal-interfaces Ovirt għall-Internet hija prattika ħażina, għax Dan ma jagħmilx sens prattiku, u joħloq theddid addizzjonali għas-sigurtà.
Għalhekk, għandek bżonn tikseb ċertifikat fuq wieħed mill-hosts bastion tagħna, u mbagħad tittrasferixxi ċ-ċertifikat u ċ-ċavetta lill-ospitant tagħna b'ovirt-engine.
Aħna nżidu l-indirizz estern tal-host bastion tagħna mad-DNS bl-isem ovirt tagħna ovirtengine.example.com, Se nħalli l-installazzjoni ta 'certbot u nginx wara l-kwinti (kif tagħmel dan huwa diġà deskritt fuq Habré).
Twaqqif ta 'verżjoni 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;
}
}
Imbagħad niksbu ċ-ċertifikat u ċ-ċavetta tagħna:
certbot certonly --nginx -d ovirtengine.example.com
Arkivja ċ-ċertifikat u ċ-ċavetta tagħna:
tar Phczf /tmp/ovirtengine.example.com.tgz /etc/letsencrypt/live/ovirtengine.example.com
Niżżel l-arkivju mill-host tal-bastjun u tella' fil-magna ovirt tagħna:
scp bastion-host:/tmp/ovirtengine.example.com.tgz /tmp/
scp /tmp/ovirtengine.example.com.tgz ovirtengine.example.com:/
Ejja ngħaddu għall-għan
Sussegwentement, aħna nippakkjaw l-arkivju tagħna u noħolqu symlinks biex nissimplifikaw il-fehim tas-sistema tal-lokazzjoni tal-fajls:
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
Aħna kkonfiguraw il-pki inkorporat f'Ovirt sabiex il-maħżen taċ-ċertifikati java (openjdk) jintuża biex tivverifika ċ-ċertifikati:
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
Aħna nikkonvertiw is-CA minn ejja kriptaġġ f'format der u żidha mal-maħżen taċ-ċertifikati tal-maħżen fiduċjarju ovirt java (dan huwa kontenitur li fih lista ta 'ċertifikati, sistema bħal din tintuża f'java):
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
Aħna neditjaw is-settings SSL għal apache, inżidu parametru biex isostni symlinks u neħħi l-parametru għas-CA li bih niċċekkjaw iċ-ċertifikati (b'mod awtomatiku, is-sett tas-sistema ta' CAs fdati se jintuża għall-verifika):
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
Imbagħad, fil-każ, aħna nappoġġjaw il-fajls oriġinali ġġenerati permezz tal-PKI awtomatiku ta 'ovirt u nibdluhom b'links simboliċi b'fajls minn 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
Nirrestawraw il-kuntesti SElinux fuq il-fajls u nibdew mill-ġdid is-servizzi tagħna (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 — server tal-web apache
ovirt-engine - interface tal-web ovirt
ovirt-imageio-proxy - daemon għat-tniżżil ta' immaġini tad-disk
ovirt-websocket-proxy - servizz għat-tħaddim tal-console noVNC
Kollha ta 'hawn fuq ġie ttestjat fuq Ovirt verżjoni 4.2.
Tiġdid awtomatiku taċ-ċertifikati fuq ovirt
Skont prattiki tajbin ta 'sigurtà, m'għandu jkun hemm l-ebda konnessjoni bejn l-ospitant tas-swar u l-ovirt, u ċ-ċertifikat jinħareġ biss għal 3 xhur. Hawnhekk tqum kwistjoni kontroversjali dwar kif implimentajt it-tiġdid taċ-ċertifikati.
Għandi playbook ansible li jaħdem fuq foreman kuljum fil-5 am skond skeda. Dan il-playbook imur għand l-ovirt, jiċċekkja l-perjodu ta’ validità taċ-ċertifikat, u jekk fadal inqas minn 5 ijiem qabel l-iskadenza, imur għand il-bastion host u jibda jaġġorna ċ-ċertifikat.
Wara li jaġġorna ċ-ċertifikat, jarkivja l-folder bil-fajls, tniżżlu lill-host Forman u unzips lill-host Ovirt. Wara dan SElinux jirrestawra l-kuntesti fuq il-fajls u jerġa 'jibda s-servizzi tagħna.
Sors: www.habr.com
